При написании тестов для компонентов React с помощью Vitest и Testing Library, следует тестировать следующие аспекты:
-
Рендеринг:
Убедитесь, что компонент рендерится без ошибок и отображает необходимые элементы. Для этого можно использовать методы React testing library.
test("renders MyComponent without errors", () => { render(<MyComponent />); expect(screen.getByTestId("my-component")).toBeInTheDocument(); }); -
Состояние:
Проверьте, что состояние компонента изменяется правильно в результате пользовательских действий, таких как нажатие на кнопки или ввод текста.
test("updates state correctly on button click", () => { render(<MyComponent />); const button = screen.getByRole("button"); fireEvent.click(button); expect(screen.getByTestId("counter-value")).toHaveTextContent("1"); }); -
Свойства:
Убедитесь, что компонент правильно реагирует на свойства, переданные ему из родительского компонента или из внешнего источника данных.
test("renders component with correct prop values", () => { const propValue = "Test"; render(<MyComponent prop={propValue} />); expect(screen.getByTestId("my-component")).toHaveAttribute( "prop", propValue, ); }); -
Взаимодействие:
Проверьте, что компонент правильно взаимодействует с другими компонентами или сервисами, с которыми он взаимодействует, например, отправляет правильные запросы на сервер. Для этого можно использовать mock-функции для имитации взаимодействия с другими компонентами или сервисами.
test("calls the correct function on button click", () => { render(<MyComponent onClick={mockFunction} />); const button = screen.getByRole("button"); fireEvent.click(button); expect(mockFunction).toHaveBeenCalled(); });Для тестирования запросов к API можно использовать библиотеку axios-mock-adapter.
-
Обработка ошибок:
Убедитесь, что компонент обрабатывает ошибки правильно и выводит соответствующие сообщения об ошибке.
test("displays error message correctly", () => { const errorMessage = "Error occurred"; render(<MyComponent />); setErrorCondition(true); expect(screen.getByTestId("error-message")).toHaveTextContent( errorMessage, ); });
Покрытие кода тестами (Code coverage)
Code coverage - это одна из метрик оценки качества тестирования, представляющая из себя плотность покрытия тестами требований либо исполняемого кода.
Для проверки Code Coverage нужно запустить команду:
yarn coverage