У меня есть компонент реагирования, который рендерится условно (рендерится, если данные извлекаются, в противном случае возвращает ноль), и я хочу проверить это с помощью jest & enzyme
. Проблема, с которой я столкнулся, заключается в том, что я хочу протестировать один из методов в классе, но .instance()
продолжает возвращать ноль, поэтому он не позволяет мне тестировать экземпляр.
мой код выглядит примерно так
export default class MyComponent extends React.Component<Props, State> {
componentDidMount() {
this.props.fetchData.then(() =>
this.setState({ loaded: true });
);
}
methodThatIWantToTest() {
//do some stuff here
}
render() {
if (this.loaded) {
// render stuff here
} else {
return null;
}
}
}
и в тесте хочу проверить
describe('myComponent', () => {
it('should do some stuff', () => {
const shallowWrapper = shallow(<MyComponent {...props}/>);
const method = shallowWrapper.instance().methodThatIWantToTest();
....such and such
});
});
но похоже, что MyComponent
возвращает только ноль, поэтому shallowWrapper.instance()
также возвращает ноль. Я пробовал shallowWrapper.update()
и многие другие вещи, но, похоже, он вообще не хочет рендериться. Как мне дождаться обновления моего компонента, а затем запустить оператор expect
?
кто-нибудь имел проблему, похожую на мою, и знает, как обойти это?