TGViewer
Work & Beer Balance Work & Beer Balance @workbeer · 1.55K subscribers
Post #275 1K
Второй прием - тестирование функций которые какие-то события оборачивают в промисы:

Раньше я писал так:
  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;
});


Второй вариант мне кажется намного чище, а вам?
  • ❤ 5
More from @workbeer
  1. Oct 12, 2026Я слышал раньше истории том что топ сениор тимлид разработчик после выгорания ушел из айти…
  2. Oct 11, 2026Недавно я писал про стартап Emergence AI, который запер нейроночки в виртуальном городке "…
  3. Oct 1, 2026Ищу нового хозяина для своего Starlabs Starlight 12.5" Linux планшета (хочу поменять его н…
  4. Sep 29, 2026👨‍💻 Фронтенд с AI: что можно делегировать агентам 5 октября, стартует конференция Podlod…
  5. Sep 29, 2026Ну и если вы пользуетесь продутами Proton - VPN или почтой, то вам будет интересно узнать…
  6. Sep 29, 2026Насколько она умная? В реальном RAG-сервисе ZüriCityGPT на реальном пользовательском трафи…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →