代码
import { createUser } from '../services';
...
...
handleFormSubmit = () => {
this.setState({ loading: true });
createUser()
.then(() => {
this.setState({
loading: false,
});
})
.catch(e => {
this.setState({
error: e,
});
});
};
测试
it('rejects...', () => {
const Container = createUserContainer(CreateUser);
const wrapper = shallow(<Container />);
return wrapper.instance().handleFormSubmit()
.catch(e => {
console.log("State: ", wrapper.state());
expect(e).toEqual('error');
});
});
嘲笑
export const createUser = function() {
return new Promise((resolve, reject) => {
reject('error');
});
};
测试确实强制代码进入方法中的 catch。所以状态确实设置为“错误”。
但是在我的测试中,它并没有达到我的预期,并在测试状态更改之前等待 Promise 拒绝。我不确定在这里尝试什么,我应该使用 async/await 吗?
所以这是我想要等待的 createUser
方法,但我不确定我的实现是否允许这样做。
原文由 coding123 发布,翻译遵循 CC BY-SA 4.0 许可协议
你应该这样做:
我认为这样更干净。你可以 在官方文档 中看到这种方法。