#reactjs #jestjs #enzyme
Вопрос:
У меня есть родительский и дочерний компоненты. От родителя я отправляю, например, массив строк.
Как я могу написать тест с моим дочерним компонентом, где я должен ожидать опору — массив строк.
Если он не будет отправлен, тест должен завершиться неудачей.
Я пытался:
it("renders correctly", () => {
const props = {
data: [],
};
const tree = shallow(<MyChildCompo {...props}/>);
expect(tree).toMatchSnapshot();
});
но это не работает
Комментарии:
1. Почему вы тестируете, что React передает реквизиты компонентам? Я не совсем понимаю ваш вопрос, вы проходите там реквизит в тесте.
2. Если некоторые реквизиты не передаются от родителя к потомку, и этот реквизит необходим в дочернем компоненте, компонент не покажет результаты
3. Вы можете определить типы свойств и пометить их
isRequired
, если они необходимы. Ваши модульные тесты должны проверять ваш код, а не код React.4. Я использую фермент для тестирования компонентов, которые соответствуют моим требованиям, мне не нужны только модульные тесты.
5. Неправильно ли тестировать компоненты реакции таким образом ?
Ответ №1:
Вы можете проверить значение реквизита следующим образом.
it("renders correctly", () => {
const props = {
data: [],
};
const tree = shallow(<MyChildCompo {...props}/>);
expect(tree).toMatchSnapshot();
expect(tree.instance().props.data.length).toBe(0);
});