Почему я не могу вызвать setProps () для компонента, возвращающего список div в энзиме js? - PullRequest
0 голосов
/ 28 апреля 2020

У меня проблема с пониманием того, как 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.

...