Я пишу тест для своей функции AWS Lambda. Лямбда-функция записывается как функция async-await.
Я написал приведенные ниже тесты mocha для своей функции.
const mainFile = require("../../src/main.js");
describe("creation", function () {
this.enableTimeouts(false)
let request = {};
let insertSpy = sinon.spy();
let mockStatsParms = mockStatsParams();
beforeEach(() => {
AWS.mock('DynamoDB.DocumentClient', 'put', insertSpy);
sinon.stub(services,"createparams").callsFake(mockStatsParams);
})
it("should return error for missing id", async function() {
request.headers = {};
let response = await mainFile.createEntry(request);
expect(insertSpy.calledOnce).to.be.true;
expect(insertSpy.calledWith(mockStatsParms)).to.be.true;
expect(response.statusCode).to.equal(401);
});
})
describe("makeResponse", function() {
let mockResponseObj = {};
beforeEach(function() {
mockResponseObj = createMockResponseObj();
})
it("Should return a valid response", function() {
expect(mainFile.makeResponse).to.be.a('function');
let response = mainFile.makeResponse("a","b","c")
expect(response.statusCode).to.equal(mockResponseObj.statusCode)
});
});
Первый метод описаний содержит тест для асинхронной функции, а второй - для нормальной функции.
Ошибка при выходе из тестовых случаев после завершения выполнения нижеприведенной строки
let response = await mainFile.createEntry(request);
Он не выполняет второй набор тестовых случаев. Но если я уберу вызов await, то mocha вернет обещание и выполнит второй набор тестов.
Я могу разрешить возвращенное обещание и проверить ответ (без использования await). Но что-то не так с использованием await? Я ожидал, что mocha будет ждать в этой строке, получить результат и затем продолжить выполнение, выполняя оставшиеся тестовые случаи.