Uma*_*raz 5 unit-testing http mocha.js sinon axios
我axios用于react redux应用程序中的 api 调用。我添加了这个拦截器来拦截所有 api 调用的响应,并在状态码为 401 时重定向用户登录。
axios.interceptors.response.use((response) => {
if (response.status === 401) {
browserHistory.push('/login');
}
return response;
});
Run Code Online (Sandbox Code Playgroud)
我正在对此进行单元测试并断言browserHistoryspy 被调用,但我不确定为什么我的测试一直失败。经过大量尝试后,我有点卡住了,无法解决问题。我moxios用于嘲笑响应。
测试
let sandbox;
beforeEach(() => {
moxios.install();
sandbox = sinon.sandbox.create();
});
afterEach(() => {
moxios.uninstall();
sandbox.restore();
});
describe('interceptors', () => {
it('should redirect to login if response status code is 401', (done) => {
moxios.withMock(() => {
sandbox.spy(browserHistory, 'push');
axios.get('/test');
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 401,
response: {}
}).then(() => {
expect(browserHistory.push).to.have.been.called; // Fails
done();
}).catch(done);
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
任何类型的资源或指南将不胜感激。我很确定我在这里遗漏了一些东西。