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`.
Unit тесты в React разработке