[英]Unit test AWS Lambda with jest and lambda-tester
在线上有很多关于如何测试AWS Lambda以及如何模拟某些依赖项的帖子。也许我已经简化了,但是我不需要任何简化。 一段时间以来,我一直在使用mocha / chai和lambda-tester 。 这对于使用简单的npm test
运行测试来说效果很好。
我现在的问题是,由于我将开始使用Jest而不是mocha / chai,因此我更新了所有测试以匹配Jest语法(与大多数语法非常相似)。 但是现在,我的测试有时会通过,有时会失败。 虽然这让我觉得我的测试没有正确处理异步,我不知道怎样才能利用玩笑文档,并使用做在我的代码,因为我相信拉姆达测试仪返回我期待的结果。
为简单起见,我的Lambda之一只是返回了图片网址。 我的测试应验证是否具有statusCode:200
以及标头具有content-type属性。
这是我通过mocha / chai格式的测试,它一贯通过(验证不是误报):
describe('Lambda to return imageURl: ', () => {
it('should return a status code 200 and have the correct header', () => {
return LambdaTester( lambda.handler )
.event( testEvent )
.expectSucceed( ( result ) => {
expect( result.statusCode ).to.equal(200);
expect( result.headers ).to.have.property( 'Location' );
});
});
})
非常坦率的。 现在,这是我在Jest中更新的测试,它不一致:
test('should return a status code 200 and have the correct header', () => {
return LambdaTester( lambda.handler )
.event( testEvent )
.expectSucceed( ( result ) => {
expect( result.statusCode ).toBe(200);
expect( result.headers ).toHaveProperty( 'Content-Type' );
});
});
转换为Jest的过程中可能遗漏了一些东西,但看不到。 希望有人能发现我的错误并帮助我前进。
您的代码似乎没有错。
mocha
与jest
之间的最大区别之一是, jest
同时运行测试,因此它可以检测出竞争状况以及Lambda上的处理程序外部的突变等可能导致mocha
丢失的问题。
这是我要解决的问题:
test.only
)。 jest --runInBand
串行运行整个套件。 如果我们遇到一致的失败,那么您可能会遇到竞态条件问题和/或代码中的错误,其中您将状态存储在处理程序之外,并且状态由不同的调用共享。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.