Проблемы теста рендеринга на основе состояния ферментов - PullRequest
0 голосов
/ 05 августа 2020

У меня есть компонент реакции, который я хочу протестировать

В методе рендеринга у меня есть следующий лог c:

<div id="someArea">
    {this.renderSection(
        this.state.oneCollection,
        'First:'
    )}
    {this.renderSection(
        this.state.twoCollection,
        'Second:'
    )}
</div>
renderSection = (collection: number[], caption: string) => {
        console.log(collection.length);
        return (collection.length > 0 &&
            <>
                <h6>{caption}</h6>
                ... Collection-related logic ...
            </>);
    }
let wrapper = mount<MyComponent>(<MyComponent
            {...props}
            ...
        />);

        const state: MyComponentState = {
            oneCollection: [
                1
            ],
            twoCollection: [
                2
            ]
        };

        await new Promise(res => {
            wrapper.instance().setState(state, () => {
                res();
            });
        });

        wrapper.instance().render();

        console.log('Test OneCollection length');
        console.log((wrapper.instance().state as MyComponentState).oneCollection.length);
        console.log('Test TwoCollection length');
        console.log((wrapper.instance().state as MyComponentState).twoCollection.length);

        console.log(wrapper.html());

Я пробовал буквально все

.update(), with wrapper re-assignment
.instance().forceUpdate(), .instance().render()
wrapper.setState({})
wrapper.instance().setState({})

вот где я закончил

Я читал почти все проблемы с github, каждый вопрос SO, который похож на мою проблему, пробовал все перечисленное там, но безуспешно

Главное, когда я регистрирую свойства состояния в тесте - он выводит правильные значения Но когда я регистрирую свойства состояния внутри метода рендеринга - он выводит неправильные значения

Похоже, что состояние просто игнорируется при рендеринге внутри фермента

Как решить?

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