如何在scala中编写AWS lamda单元测试用例?
我们如何为aws lamda serverless实现单元测试用例。 我的代码是如何在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)
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我已更新了我的代码。你能检查一下吗