moxios的正确使用
Correct usage of moxios
我正在尝试使用 moxios 在函数中模拟 axios 请求。测试 运行 很好并且得到了预期的结果,但我不认为我实施它的方式根本不是最佳实践。有人可以建议我一个更好的方法来实现这个而不是在测试中使用 setTimeout()
吗?
....
componentDidMount() {
this.fetchSomething();
}
fetchSomething = () => {
Axios.get('https://someurl.com/api/1')
.then((response) => {
this.setState({ data: response.data.data });
})
.catch((error) => {
this.setState(error);
})
}
....
我写的测试:
beforeEach(() => {
moxios.install();
});
afterEach(() => {
moxios.uninstall();
})
it('should ', async (done) => {
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: { data: 'hello' }
})
});
const wrapper = shallow(<TestComponent />);
setTimeout(() => {
expect(wrapper.instance().state.data).toEqual('hello')
done();
}, 500)
});
我认为这是一个更好的选择。
it('should ', (done) => {
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: { data: 'hello'}
}).then(() => {
expect(wrapper.instance().state.data).toEqual('hello');
done()
})
});
});
const wrapper = shallow(<TestComponent />);
我正在尝试使用 moxios 在函数中模拟 axios 请求。测试 运行 很好并且得到了预期的结果,但我不认为我实施它的方式根本不是最佳实践。有人可以建议我一个更好的方法来实现这个而不是在测试中使用 setTimeout()
吗?
....
componentDidMount() {
this.fetchSomething();
}
fetchSomething = () => {
Axios.get('https://someurl.com/api/1')
.then((response) => {
this.setState({ data: response.data.data });
})
.catch((error) => {
this.setState(error);
})
}
....
我写的测试:
beforeEach(() => {
moxios.install();
});
afterEach(() => {
moxios.uninstall();
})
it('should ', async (done) => {
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: { data: 'hello' }
})
});
const wrapper = shallow(<TestComponent />);
setTimeout(() => {
expect(wrapper.instance().state.data).toEqual('hello')
done();
}, 500)
});
我认为这是一个更好的选择。
it('should ', (done) => {
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: { data: 'hello'}
}).then(() => {
expect(wrapper.instance().state.data).toEqual('hello');
done()
})
});
});
const wrapper = shallow(<TestComponent />);