AWSラムダのテスト方法や特定の依存関係を模擬する方法については、オンラインで多くの記事があります。私は単純化し過ぎているかもしれませんが、その必要はありません。しばらくの間、私はmocha/chaiとlambda-testerを使っています。これは単純なnpm test
でテストを走らせるのにうまくいきました。単体テストAWSラムダとjestとlambda-tester
私の問題は今、mocha/chaiの代わりにJestを使うようになってきたので、すべてのテストをJestの構文に合わせて更新しました。しかし、今は私のテストが合格しないことがあります。これは私のテストが非同期を正しく処理していないと思うのですが、私はlesta-testerが私が期待している結果を返すと信じているので、私はJestのドキュメントをどのように利用でき、doneを私のコードに使用するのか分かりません。
私のLambdasは、単純にイメージURLを返します。私のテストでは、それがstatusCode:200
であり、そのヘッダーにcontent-typeプロパティがあることを確認する必要があります。それはモカ/チャイ形式であったように、それは一貫して(検証偽陽性ではない)を通過したときにここで
は、私のテストで:
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');
});
});
})
かなりまっすぐ進みます。さて、ここに矛盾している冗談で私の更新されたテストは、次のとおりです。
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');
});
});
私が冗談に私の変換で何かを見逃している可能性があり、私は何を参照することはできません。うまくいけば、誰かが私の間違いを見つけて前進するのを助けることができます。