Фермент мелкой визуализации дочерних компонентов, изменение поведения при обновлении пакета - PullRequest
1 голос
/ 03 июля 2019

В настоящее время я работаю над обновлением зависимостей npm для проекта, которым я владею, и столкнулся с несколькими неудачными тестовыми примерами из-за изменения поверхностного поведения компонентов.

Я перенес зависимости реагирования / энзима / шута от

"react": "15.6.1",
"enzyme": "3.3.0",
"enzyme-adapter-react-15": "1.0.5",
"jest": "23.6.0",

до

"react": "16.8.6",
"enzyme": "3.10.0",
"enzyme-adapter-react-16": "1.14.0"
"jest": "24.8.0",

В предыдущей комбинации следующий тест завершается успешно:

describe("TpidTenantList", () => {
    it("test components", () => {
        const Foo = props => <div className="Foo" />;
        const Bar = props => (
            <div className="Bar">
                <Foo />
                <Foo />
            </div>
        );

        const wrapper = shallow(<Bar />);
        expect(wrapper.find(Foo).length).toBe(2);
    });
});

Однако с новой комбинацией этот тест не пройден. Глядя на рендеринг html для оболочки, я вижу, что на самом деле мелкий рендеринг на самом деле рендерил субкомпонент Foo, давая

<div class="Bar">
    <div class="Foo"></div>
    <div class="Foo"></div>
</div>

Если вместо этого я изменю тест на .find(".Foo"), тест пройден, однако некоторые тестируемые компоненты содержат HighChart и другие библиотеки, которые проблематично отображать.

Я попытался обернуть тестируемый компонент, а также задать опцию disableLifecycleMethods для поверхностной обработки, но полное дерево компонентов, похоже, выполняет рендеринг.

В идеале я хотел бы привести поведение к старой библиотеке комбинаций, или, если есть предпочтительный шаблон, я был бы рад принять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...