Jest проверка, когда вызывается асинхронная функция - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь проверить, вызывается ли асинхронная функция (запустить и забыть).

Content.js

  export async function fireAndForgetFunction() {
    ...  
  }

  export async function getData() {
    ...
    fireAndForgetFunction()
    return true;
  }

Я хотел бы проверить, была ли fireAndForgetFunctionвызывается более одного раза.

Current test

  import * as ContentFetch from '../Content';

  const { getData } = ContentFetch;
  const { fireAndForgetFunction } = ContentFetch;

  it('test',async () => {
    const spy = jest.spyOn(ContentFetch, 'fireAndForgetFunction');

    await getData();

    expect(spy).toHaveBeenCalled();
  })

Результат теста с ошибкой:

    Expected number of calls: >= 1
    Received number of calls:    0

Как я могу выполнить этот тест?

1 Ответ

0 голосов
/ 04 октября 2019

Если вы не хотите ждать fireAndForgetFunction в getData(), что, как я полагаю, имеет место, тогда лучше использовать ложную реализацию fireAndForgetFunction при создании шпиона:

it('test', (done) => {
    const spy = jest.spyOn(ContentFetch, 'fireAndForgetFunction')
        .mockImplementation(() => {
          expect(spy).toHaveBeenCalled();
          done();
        })
    getData();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...