Ich verwende axios
für die API-Anrufe in meinem react
redux
App. Ich habe diese Abfangjäger die Antwort für alle api Anrufe abfangen und umleiten Benutzer anmelden, wenn der Statuscode 401.Unit Testing Interceptor (Axios)
axios.interceptors.response.use((response) => {
if (response.status === 401) {
browserHistory.push('/login');
}
return response;
});
ist Ich bin Einheit testet diese und behauptet auf browserHistory
Spion aufgerufen, aber ich bin nicht sicher, warum mein Test immer versagt. Ich bin nach vielen Versuchen festgefahren und kann das Problem nicht lösen. Ich verwende moxios
für Spottantwort.
-Test
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);
});
});
});
});
Jede Art von Ressourcen oder Führungs würde wirklich geschätzt. Ich bin mir ziemlich sicher, dass mir hier etwas fehlt.
Ich denke, Sie müssen 'axios.get ('/ test')' nach der 'moxios.wait' Definition aufrufen. – anoop
Hey @anoop. Ich denke, ich habe das auch versucht, aber kein Glück. Irgendwelche anderen Vorschläge? – Umair
aktualisiert als Antwort, ich denke, die Antwort muss mit einem Versprechen ausspionieren. – anoop