Мокко выходит после первого звонка - PullRequest
0 голосов
/ 20 июня 2019

Я пишу тест для своей функции 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 будет ждать в этой строке, получить результат и затем продолжить выполнение, выполняя оставшиеся тестовые случаи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...