[英]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.