#reactjs #testing #react-testing-library
Вопрос:
Я совершенно новичок в тестировании приложений react. Мне интересно, есть ли необходимость в тестировании, чтобы каждый компонент отображался без сбоев, или достаточно просто протестировать компонент приложения, поскольку он является родительским для всех компонентов?
Кроме того, любой совет и то, что нужно проверить в компоненте, было бы здорово 🙂
import { render } from "@testing-library/react";
import App from "./App";
// Test that the App Component renders without crashing
describe("App", () => {
test("renders App component", () => {
render(<App />);
});
});
Например, в другом компоненте я бы выполнил следующий тест:
import { render } from "@testing-library/react";
import App from "./App";
// Test that the AnotherComp Component renders without crashing
describe("AnotherComp", () => {
test("renders App component", () => {
render(<AnotherComp/>);
});
});
Ответ №1:
Я рекомендую react-test-renderer
для этой цели:
import App from './App';
import renderer from 'react-test-renderer';
describe("App rendering specification", () => {
it('App is rendered', () => {
const component = renderer.create(
<App/>
);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
});
Теперь, что касается подхода к тестированию: это целая философия, у разных людей разные точки зрения, но общий стандарт заключается в максимизации охвата тестированием с помощью запуска jest --coverage
в командной строке. Мой подход заключается в тестировании жизненно важных функций приложения.
Комментарии:
1. Спасибо. Итак, этот тест отображает все приложение целиком, поэтому нет необходимости добавлять его в каждый компонент?
2. И есть ли один конкретный тест, который должен быть в каждом компоненте? Или это просто зависит от функциональности компонента?
3. Нет, снимок просто «замораживает» то, как компонент выглядит в данный момент, я имею в виду, какой html он отображает. Вы должны протестировать снимок каждого компонента отдельно, а также вручную протестировать все функции внутри.
Ответ №2:
Следуя react-testing-library
руководящим принципам, лучше всего тестировать только определенные компоненты, а не все приложение, поскольку в нем указано, что вы хотите избежать тестирования дочерних компонентов. поэтому, чтобы ответить на ваш вопрос, используя эту библиотеку, вы хотите протестировать каждый компонент отдельно, поскольку он предназначен для модульного тестирования.
Если бы вы хотели протестировать все свое приложение в одном тесте, вы бы искали сквозные тестовые платформы, такие как Cypress.