gpt4 book ai didi

unit-testing - 使用 jest 和 lambda-tester 对 AWS Lambda 进行单元测试

转载 作者:行者123 更新时间:2023-12-05 07:40:15 24 4
gpt4 key购买 nike

网上有很多关于如何测试 AWS lambda 以及如何模拟某些依赖项等的帖子。也许我过于简化了,但我不需要这些。有一段时间,我一直在使用 mocha/chai 和 lambda-tester .这对于使用简单的 npm test 运行测试来说效果很好。

我现在的问题是,当我被引导使用 Jest 而不是 mocha/chai 时,我已经更新了我所有的测试以匹配 Jest 语法(与大多数语法非常相似)。但是现在,我的测试有时会通过,有时会失败。虽然这让我觉得我的测试没有正确处理异步,但我看不出如何利用 Jest 文档和使用 done在我的代码中,因为我相信 lambda-tester 会返回我期望的结果。

为简单起见,我的一个 Lambda 只返回一个图像 URL。我的测试应验证具有 statusCode:200 并且 header 具有 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 的过程中遗漏了一些东西,但我看不到什么。希望有人能发现我的错误并帮助我继续前进。

最佳答案

您的代码似乎没有任何问题。

mochajest 之间的最大区别之一是 jest 并发运行测试,因此它可以检测竞争条件和突变等问题在您的 Lambda 处理程序之外,mocha 可能会错过。

这是我要解决的问题:

  • 尝试多次运行该单一测试(该单一文件和单一测试使用 test.only)。
  • 尝试使用 jest --runInBand 连续运行整个套件。

如果我们在这些方面遇到一致的失败,那么您可能存在竞争条件问题和/或您的代码中存在错误,您将状态存储在处理程序之外并且由不同的调用共享。

关于unit-testing - 使用 jest 和 lambda-tester 对 AWS Lambda 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com