У меня проблема с пониманием того, как setProps
предназначена для работы с библиотекой фермента js.
Начнем с примера:
const CompA = (props) => {
return props.listOfNumbers.map((number) => <div>{number}</div>);
};
it("Test CompA", () => {
const wrapper = shallow(<CompA listOfNumbers={[1]}/>); // -> (Debug log) ShallowWrapper {length: 1}
wrapper.setProps({listOfNumbers: [1, 2]}); // -> (Debug log) ShallowWrapper {length: 2}
wrapper.setProps({listOfNumbers: [1, 2, 3]}); // Enzyme error: Method “rerender” is meant to be run on 1 node. 2 found instead.
});
Из фермента js документы .
setProps: A method that sets the props of the root component, and re-renders.
Итак, я предполагаю, что компонент root проверен в ShallowWrapper
, возвращенном функцией shallow
. И, если я правильно понимаю вышеуказанную ошибку фермента, я жалуюсь, что пытаюсь вызвать setProps
в оболочке, у которой есть список узлов, а не узел.
Но моя путаница заключается в том, что Могу ли я вызвать setProps
на CompA
и проверить вывод его функции рендеринга, каким бы ни был этот вывод?
У меня сложилось впечатление, что я могу вызвать setProps
только если компонент находится под test возвращает один узел из своей функции визуализации. И что один узел является root компонентом , упомянутым в энзиме do c.