【发布时间】:2020-06-19 06:25:42
【问题描述】:
我正在尝试将 Jest 与基于 NodeJS 的 AWS Lambda 函数一起使用,以测试 Lambda 处理程序函数是否返回特定状态代码。似乎使用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,我会收到异步超时:
超时 - 在 5000 毫秒超时内未调用异步回调 由 jest.setTimeout.Timeout 指定
关于为什么这不起作用的任何想法?
lambda 应该立即失败,因为传入的事件没有必需的属性,并且在通过 Postman 测试时确实如此。
编辑: 这个 lambda 是无服务器应用程序的一部分,可以在本地进行测试,我如何使用 Jest 来做到这一点?
【问题讨论】:
-
1) 你试过
await吗? 2)您真的需要在 aws 环境中对其进行测试(例如:您的 lambda 依赖于其他 lambda 才能工作)还是您可以抽象功能以在本地测试它?
标签: javascript amazon-web-services jestjs