Sinon JS тестирует асинхронную функцию - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь проверить функцию, которая содержит асинхронные вызовы. Я пытался использовать setTimeout и sinon.useFakeTimers();, но не смог многого достичь.

Первый асинхронный вызов - это вызов API, выполненный с axios, который моделируется с использованием nock. Но все же тест завершается до выполнения всей функции.

Вот мой тест

describe("endpoint request", () => {
  beforeEach(() => {
    nock("http://endpoint.com")
      .get("/params")
      .reply(200, response);
  });

  it("should return a receipt", function() {
    let req = httpMocks.createRequest({
      params: {
        locale: "uk-en",
        surname: "presley"
      }
    });
    const spy = (res.writeHead().end = sinon.spy());
    getPNGReceipt(req, res);
    expect(spy.calledOnce).toEqual(true);
  });
});

внутри getPNGReceipt Я выполняю запрос на получение http://endpoint.com/params, но expect(spy.calledOnce).toEqual(true); вызывается до завершения getPNGReceipt(req, res);.

Как я мог заставить sinon ждать перед выполнением expect(spy.calledOnce).toEqual(true);?

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