Тестирование компонентов React в основном выполняется с помощью Enzyme, если вы пытаетесь сделать это только с помощью Jest, вы, вероятно, выбрали не тот инструмент.Я могу только догадываться, зачем вам нужно издеваться над компонентом, но, скорее всего, вы сможете достичь этого с помощью Enzyme.
Существует Engrome shallow рендеринг , который специально создан для тестирования React.Сам Jest не способен на рендеринг компонентов.Определение по Документам Airbnb :
Мелкий рендеринг полезен, чтобы ограничиться тестированием компонента как единицы и гарантировать, что ваши тестыне косвенно утверждают о поведении дочерних компонентов.
Проще говоря, это сделает глубину тестируемого компонента на 1 уровне, например
// File2.js
import { MyComponent } from 'File1';
import { shallow } from 'enzyme';
describe('MyComponent', () => {
it('should render shallowly my component', () => {
const wrapper = shallow(<MyComponent />);
console.log(wrapper.debug());
// output:
// <div>
// <A />
// <B />
// </div>
// Note: even if component <A /> is consisting of some markup,
// it won't be rendered
});
});
По сути, вам не нужновысмеивать любой из его зависимых компонентов, они уже смоделированы энзимом shallow()
Вместо этого вы можете проверить, когда вы передаете определенные реквизиты на <MyComponent />
, зависимые компоненты <A />
и <B />
получаютожидаемый реквизит.
const wrapper = shallow(<MyComponent foo={1} bar={2} />);
expect(wrapper.find('A').props().foo).toEqual(1);
expect(wrapper.find('B').props().bar).toEqual(2);