如何在scala中编写AWS lamda单元测试用例?

如何在scala中编写AWS lamda单元测试用例?,scala,aws-lambda,aws-serverless,Scala,Aws Lambda,Aws Serverless,我们如何为aws lamda serverless实现单元测试用例。 我的代码是 object Test1 extends RequestHandler[APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent] with ResponseObjProcess { override def handleRequest(input: APIGatewayProxyRequestEvent, context: Context)

我们如何为aws lamda serverless实现单元测试用例。 我的代码是

    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
  }

实际上,我得到了响应。getStatusCode=400错误的请求,但测试用例通过了。我如何编写来处理这个问题。

我正在查看您的测试代码,不清楚您试图通过断言实现什么。我想你可能混淆了很多东西。在当前的代码中,您有一个
val
,而不是断言。我鼓励您查看相关文档并研究可供选择的选项:


您能告诉我们您目前的单元测试代码以及它的问题所在吗?这与测试非Lambda代码的方法相同——传递已知的输入并断言其结果。那么,您尝试时出现了什么问题?@Dima我已更新了我的代码。你能检查一下吗