Ich habe Probleme mit nock, um meine Redux-Aktion Schöpfer zu testen. Wenn ich offline gehe, bekomme ich immer wieder fehlgeschlagene Versprechen, was bedeutet, dass die HTTP-Anfrage mit Axios nicht erfolgreich war. Wenn ich online gehe, funktioniert es allerdings.Funktioniert Nock nur, wenn eine Internetverbindung besteht?
Funktioniert Nock nur, wenn eine Internetverbindung besteht?
Aktion Creator (verwendet axios 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
});
});
};
};
Jest Test für die Aktion Schöpfer (Nock 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');
});
});
Ich benutze Axios, um HTTP-Aufrufe in meiner Aktion Schöpfer zu machen. Zum Testen verwende ich Jest und rufe an, um einen Interceptor einzurichten. Es scheint, dass Interceptor überhaupt nicht verwendet wird. Wenn ich offline gehe (oder nock.disableNetConnect() aufrufen), schlägt mein axios.get fehl und geht zu seinem catch-Block. – nbkhope
Können Sie Ihre Frage so bearbeiten, dass sie Ihren Testfall enthält? –