簡體   English   中英

開玩笑 - 測試 AWS Lambda

[英]Jest - Testing for AWS Lambda

我正在嘗試將 Jest 與基於 NodeJS 的 AWS Lambda function 一起使用,以測試 Lambda 處理程序 ZC1C425Z078E68A94F1C141 是否返回特定狀態代碼7。 似乎使用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,我會得到異步超時:

超時 - 在 jest.setTimeout.Timeout 指定的 5000 毫秒超時內未調用異步回調

關於為什么這不起作用的任何想法?

lambda 應該立即失敗,因為傳入的事件沒有必需的屬性,並且在通過 Postman 測試時確實如此。

編輯:這個 lambda 是無服務器應用程序的一部分,可以在本地進行測試,我如何使用 Jest 來做到這一點?

我想多了,下面的效果很好:

test('should return a StatusCode of 400 due to requirement not being met', async () => {

  const event = {};
  const context = {};

  const result = await handler.run(event, context);
  expect(result.statusCode).toBe(400)
  expect(result.headers)

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM