[英]Jest - Testing for AWS Lambda
我正在嘗試將 Jest 與基於 NodeJS 的 AWS Lambda function 一起使用,以測試 Lambda 處理程序 ZC1C425Z078E68A94F1C141 是否返回特定狀態代碼7。 似乎使用lambda-tester是實現這一目標的最簡單方法。
handler.test.js
const handler = require('../src/handler.js');
const LambdaTester = require('lambda-tester');
test('should return a StatusCode of 400 due to requirement not being met', function (done) {
return LambdaTester(handler.run)
.event({})
.expectResult(result => {
expect(result.statusCode).toBe(400);
});
});
我認為這很簡單,但是結果我得到了這個:
expect(received).toBe(expected) // Object.is equality
Expected: 400
Received: 500
7 | .event({})
8 | .expectResult(result => {
> 9 | expect(result.statusCode).toBe(400);
| ^
10 | });
11 | });
12 |
at tests/handler.test.js:9:33
at runVerifier (node_modules/lambda-tester/lib/runner.js:121:16)
at LambdaRunner.run (node_modules/lambda-tester/lib/runner.js:277:23)
如果我更改期望行以檢查狀態碼 500,我會得到異步超時:
超時 - 在 jest.setTimeout.Timeout 指定的 5000 毫秒超時內未調用異步回調
關於為什么這不起作用的任何想法?
lambda 應該立即失敗,因為傳入的事件沒有必需的屬性,並且在通過 Postman 測試時確實如此。
編輯:這個 lambda 是無服務器應用程序的一部分,可以在本地進行測試,我如何使用 Jest 來做到這一點?
我想多了,下面的效果很好:
test('should return a StatusCode of 400 due to requirement not being met', async () => {
const event = {};
const context = {};
const result = await handler.run(event, context);
expect(result.statusCode).toBe(400)
expect(result.headers)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.