Как я могу проверить, что некоторая поддержка получена в дочернем компоненте

#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);
});