Search
Write a publication
Pull to refresh

Comments 2

Не понял всей этой темы с отрицанием необходимости тестировать АПИ, кроме разумеется того как вы это делаете. Так делать, конечно, не стоит.

Если у вас есть юнит-тест, который учитывает схему данных полученных по сети, то вы тестируете всю цепочку от получения данных до отображения на экране. Меняется апи и вам нужно поменять схему зода, если надо модельки, но при этом в самом тесте меняется только мок и только то, что должно поменяться на экране.

Почему не нужно делать вот так:

// Хрупкий тест
it('loads user data', async () => {
  axios.get.mockResolvedValue({ data: { name: 'John' } });
  
  const { result } = renderHook(() => useUser());
  await waitFor(() => {
    expect(result.current.user.name).toBe('John');
  });
});

Если у вас есть сторибук и не один юнит тест, то должна быть отдельная функциональность для генерации данных для моков. Если такая функциональность есть, то вносить изменения нужно в одно место, а не во все юнит тесты. И тогда ваши юнит тесты будут тестировать и схемы zod, и другие изменения данных, которые не влияют на предыдущую функциональность.

И, разумеется, если у вас настроен msw для тестов, то добавлять `axios.get.mockResolvedValue({ data: { name: 'John' } });` постоянно не обязательно.

Разделяю совет не увлекаться юнит тестами чисто ради 100% покрытия. Zod сильно помогает, также как Playwright или Cypress. Я обычно подключаю для создания тестов AI, но всегда смотрю, что именно они тестируют. Удалить лишнее - не долго. Один момент можно было бы усилить: для примеров использовать последние версии библиотек. Так, например, `@testing-library/react-hooks` уже уступила место `@testing-library/react`.

Sign up to leave a comment.

Articles