Ожидайте, что будет вызвана определенная функция - PullRequest
1 голос
/ 05 августа 2020

У меня есть прослушиватель onChange, и я хочу убедиться, что он вызывается.

У меня действительно есть код, который работает, но кажется странным.

test('on change should be invoked when deleting', async () => {
    expect.assertions(1);
    someTestThing.onChange.sub(() => expect(true).toBe(true));
    await someTestThing.delete(TEST_ID);
});

I Я имею в виду часть expect(true).toBe(true), которая кажется неправильной.

Изменить:

Думаю, я тоже мог бы сделать это, что кажется немного более разумным, на самом деле мне это очень нравится:

test('on change should be invoked when deleting', async () => {
    const cb = jest.fn();
    someTestThing.onChange.sub(cb);
    await someTestThing.delete(TEST_ID);
    expect(cb.mock.calls.length).toBe(1);
});

1 Ответ

0 голосов
/ 05 августа 2020

Используйте утверждение toHaveBeenCalled Jest.

const someTestThing = {
  onChange: (event: Event) => console.log(event),
  delete: async (id: string) => console.log(id)
}

it('on change should be invoked when deleting', async () => {
  const mock = jest.fn(someTestThing.onChange);

  mock(new CustomEvent('Foo'));
  await someTestThing.delete('1')

  expect(mock).toHaveBeenCalled();
})

Документация

...