Как я могу написать примеры модульных тестов AWS lamda в scala? - PullRequest
0 голосов
/ 08 декабря 2018

Как мы можем реализовать примеры модульного тестирования для aws lamda без сервера.Мой код

    object Test1 extends RequestHandler[APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent] with ResponseObjProcess {


  override def handleRequest(input: APIGatewayProxyRequestEvent, context: Context): APIGatewayProxyResponseEvent = {
    var response = new APIGatewayProxyResponseEvent()
    val gson = new Gson

    val requestHttpMethod = input.getHttpMethod
    val requestBody = input.getBody
    val requestHeaders = input.getHeaders
    val requestPath = input.getPath
    val requestPathParameters = input.getPathParameters
    val requestQueryStringParameters = input.getQueryStringParameters
    val parsedBody = JSON.parseFull(requestBody).getOrElse(0).asInstanceOf[Map[String, String]]
    println(" parsedBody is:: " + parsedBody)

    val active = parsedBody.get("active").getOrElse("false")
    val created = parsedBody.get("created").getOrElse("0").toLong
    val updated = parsedBody.get("updated").getOrElse("0").toLong

    requestHttpMethod match {
      case "PUT" =>
        println(" PUT Request method ")
        //  insertRecords("alert_summary_report", requestBody)
        response.setStatusCode(200)
        response.setBody(gson.toJson("PUT"))
      case _ =>
        println("")
        response.setStatusCode(400)
        response.setBody(gson.toJson("None"))

    }
    response
  }
}

И я попытался реализовать примеры модульных тестов для приведенного выше кода.Ниже приведен код:

test("testing record success case") {

    var request = new APIGatewayProxyRequestEvent();
    request.setHttpMethod(Constants.PUTREQUESTMETHOD)

    DELETEREQUESTBODY.put("id", "")

    request.setBody(EMPTYREQUESTBODY)
    request.setPathParameters(DELETEREQUESTBODY)

    println(s"body = ${request.getBody}")
    println(s"headers = ${request.getHeaders}")

    val response = ProxyRequestMain.handleRequest(subject, testContext)
    val assertEqual = response.getStatusCode.equals(200)
    assertEqual
  }

На самом деле я получаю response.getStatusCode = 400 неверных запросов, но тестовый пример пройден, как я могу написать обработать это.

1 Ответ

0 голосов
/ 09 декабря 2018

Я смотрю на ваш тестовый код, и мне не ясно, чего вы пытаетесь достичь с помощью ваших утверждений.Я думаю, что вы могли бы смешать довольно много вещей.В коде в том виде, в котором он есть на данный момент, у вас есть val, а не утверждение.Я бы посоветовал вам взглянуть на соответствующие документы и изучить доступные вам варианты:

http://www.scalatest.org/user_guide/using_assertions

http://www.scalatest.org/user_guide/using_matchers

...