我一直有问题使用nock来测试我的Redux动作创作者。当我离线时,我不断收到失败的承诺,这意味着使用Axios的HTTP请求不成功。当我上网时,它可以工作,但是。只有在有互联网连接的情况下nock才能工作吗?
那么nock只有在有互联网连接时才能工作?
行动造物主(使用爱可信0.15.3)
export const fetchSomething = (id) => {
return dispatch => {
dispatch({
type: FETCH_SOMETHING_LOADING
});
return axios.get(`${SOMEWHERE}/something?id=${id}`)
.then(response => {
return dispatch({
type: FETCH_SOMETHING_SUCCESS,
payload: response.data
});
})
.catch(error => {
return dispatch({
type: FETCH_SOMETHING_FAILURE
});
});
};
};
玩笑测试行动的创建者(箭扣v9.0.2)
test('should dispatch success action type if data is fetched successfully',() => {
// Need this in order for axios to work with nock
axios.defaults.adapter = require('axios/lib/adapters/http');
nock(SOMEWHERE)
.get('/something?id=123')
.reply(200, someFakeObject);
thunk = fetchSomething(123);
return thunk(dispatch)
.then(() => {
expect(dispatch.mock.calls[1][0].type).toBe('FETCH_SOMETHING_SUCCESS');
});
});
我使用axios在我的动作创建者中进行HTTP调用。为了测试,我使用Jest并打电话给nock来设置一个拦截器。看起来拦截器根本没有被使用。当我走出去(或调用nock.disableNetConnect())时,我的axios.get失败并进入其catch块。 – nbkhope
你可以编辑你的问题,让它有你的测试用例吗? –