Раньше я писал так:
itWithMock('test getFooFromEvents', async ({ ctx }) => {
const { mock, api } = ctx;
const getFooFromEventsSpy = vi.fn(getFooFromEvents);
getFooFromEventsSpy(api);
const eventPayload = {
foo: 'bar',
};
mock.emit('event', eventPayload);
await pause(100);
expect(getFooFromEventsSpy).toHaveResolvedWith(eventPayload);
});И честно признаюсь мне никогда не нравилась часть с
const getFooFromEventsSpy = vi.fn(getFooFromEvents); потому что она ощущалась мусорным болиерплейтом, который даже в beforeEach вынесешь только хуже сделаешь (потому goToReferenece по тестируемой функции приведет на место оборачивания в vi.fn вместо сорс кода функции)
да и
await pause(100); будем честны тоже грязновато.Теперь я пишу так
itWithMock('test getFooFromEvents', async ({ ctx }) => {
const { mock, api } = ctx;
const eventPayload = {
foo: 'bar',
};
const assertion = expect(getFooFromEventsSpy(api)).resolves.toEqual(eventPayload);
mock.emit('event', eventPayload);
await assertion;
});Второй вариант мне кажется намного чище, а вам?