1
を解決した後...テスト状態値の約束は、ログインを行うコンポーネント考える
onSubmit(e) {
e.preventDefault();
const { userStore, data } = this.props;
this.setState({isLogin: true});
const promise = userStore.login(data);
promise.then(() => {
this.setState({isLogin: false});
})
}
どのように私は約束が解決された後isLogin状態がfalseの場合、検証テストを作成することができますか?
これまでのところ、私が持っている..
it('resolved submit should set isLogin to false',() => {
mockApi.onPost('/authenticate').reply(200);
const userStore = new UserStore();
let fromPromiseLogin;
userStore.login = jest.fn()
.mockImplementationOnce((data) => {
fromPromiseLogin = userStore.login(data);
return fromPromiseLogin;
});
const wrapper = mount(
<FormLogin userStore={userStore} />,
);
wrapper.find('form').simulate('submit');
// HOW CAN I WAIT/OR CALLBACK FOR THE PROMISE ? I TRIED >
whenWithTimeout(
() => fromPromiseLogin && fromPromiseLogin.state !== PENDING,
() => expect(wrapper.state().isLogin).toBeFalsy(),
);
});
しかしhereが説明するようにexeption
[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: 'Reaction[[email protected]] TypeError: Cannot read property 'state' of undefined