Я пытаюсь использовать Jest с моей NodeJS основанной на AWS лямбда-функцией, чтобы проверить, что функция-обработчик Lambda возвращает определенные c коды состояния. Похоже, что использование лямбда-тестера - самый простой способ добиться этого.
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);
});
});
I подумал, что это будет довольно просто, но в результате я получаю это:
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, я получаю Asyn c тайм-аут:
Тайм-аут - асинхронный c обратный вызов не был вызван в течение тайм-аута 5000 мс, указанного в jest.setTimeout.Timeout
Есть идеи, почему это не работает?
Лямбда должна немедленно выйти из строя, потому что передаваемое событие не имеет обязательного атрибута, и это действительно так при тестировании через Postman.
Изменить: Эта лямбда является частью бессерверного приложения и можно протестировать локально, как я могу использовать Jest для этого?