Создайте тестовые файлы с шаблоном имени {имя компонента}.test.js
в том же каталоге, который содержит {имя компонента}.js
.
Когда вы изменяете компонент таким образом, что это влияет на разметку, вам потребуется обновить снимок, чтобы тесты прошли успешно. Для этого выполните команду yarn run test-unit -u
. Это обновит все снимки в репозитории. Вы также можете добавить любую строку в конец команды, чтобы запустить тесты только в каталогах, содержащих эту строку. Например, yarn run test-unit -u button
обновит тесты только для каталогов, которые содержат button
.
Модуль src/test
экспортирует некоторые функции и константы, которые помогут вам писать более качественные тесты:
findTestSubject
помогает находить узлы DOM в смонтированных компонентах.requiredProps
— это список всех свойств, которые почти все компоненты должны поддерживать.takeMountedSnapshot
генерирует снимок смонтированного компонента.data-test-subj
, чтобы пометить части компонента, которые вы хотите найти позже.Хороший тест должен документировать:
describe('YourComponent', () => {
test('is rendered', () => {
const component = render(
<YourComponent {...requiredProps}>
Hello
</YourComponent>
);
expect(component)
.toMatchSnapshot();
});
describe('props', () => {
describe('color', () => {
test('is rendered', () => {
const component = render(
<YourComponent color="blue" />
);
expect(component)
.toMatchSnapshot();
});
});
describe('onClick', () => {
test(`isn't called upon instantiation`, () => {
const onClickHandler = sinon.stub();
mount(
<YourComponent onClick={onClickHandler} />
);
sinon.assert.notCalled(onClickHandler);
});
test('is called when the button is clicked', () => {
const onClickHandler = sinon.stub();
const component = mount(
<YourComponent onClick={onClickHandler} />
);
// NOTE: This is the only way to find this button.
component.find('button').simulate('click');
sinon.assert.calledOnce(onClickHandler);
});
});
});
describe('behavior', () => {
it('button is automatically focused', () => {
const component = mount(
<YourComponent />
);
expect(findTestSubject(component, 'button').getDOMNode()).toBe(document.activeElement);
});
});
});
Файл компонента можно смоделировать для упрощения создания снимков или для устранения недетерминированного рендеринга в тестовых средах. Пример см. в src/components/icon
.
Хотя файлы фиктивных компонентов в настоящее время используются только как часть тестовых сред потребляющих проектов, эта концепция скоро будет применена к собственной тестовой среде EUI.
Мокинг компонентов опирается на использование пространства имён [name].testenv.*
для идентификации. Мокированный модуль заменит стандартный импорт в сборке test-env
. Можно смоделировать как файлы index
, так и отдельные файлы компонентов.
Визуализированный вывод смоделированного компонента остаётся на усмотрение автора, однако все публичные экспортные данные модуля должны быть сохранены в файле-макете. Обратите внимание, что это не относится к экспортируемым типам TypeScript и интерфейсам, которые всегда будут производными от исходного файла компонента.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )