Was haben Sie erwartet? Ich gehe davon aus, dass die Anzahl der sinon.fakeServer.requests mehr als 1 war
Was tatsächlich passiert, ist sinon.fakeServer.requests immer null
So reproduzieren Sie
describe('--Pictures Selector--', () => {
let server, store, wrap;
beforeEach(() => {
server = sinon.fakeServer.create();
server.respondWith("GET", /\/api\/users/, [
200, {"Content-Type":"application/json"}, JSON.stringify(mock_pictures_list_store)
]);
store = new Pictures_List_Store([]);
wrap = mount(
<Selectable_Picture_List store={store} />
);
axios.get('http://localhost:9157/api/users/5/images/30/0');
console.log("%c server.requests", "color: #C78B41", server.requests);
});
afterEach(() => {
server.restore();
});
it('render drop zone', () => {
server.respond();
console.log("%c server.requests", "color: #C78B41", server.requests);
expect(wrap.find('Dropzone')).to.have.length(1);
});
});
Ich rufe
axios.get
Requests direkt im Testcode auf und es wird auch in der componentWillMount
Methode einer React.js Komponente aufgerufen
axios.get()
ist asynchron. Das bedeutet, dass, wenn Ihre console.log
Zeile ausgeführt wird, die xmlhttprequest
noch nicht erstellt wurde.
Danke für die Antwort. Aber wenn ich server.autoRespond = true;
oder server.respondImmediately = true;
oder server.respond();
verwende, ist server.requests immer noch leer. Ist es richtig, dass diese Dinge nicht funktionieren?
Gibt es eine Möglichkeit, HTML-Tests mit fakeServer zu starten?
Gibt es eine Möglichkeit, HTML-Tests mit fakeServer zu starten?
Ja, es gibt .
Die Lösung zum Anzeigen der Anforderungen in Ihrem beforeEach
oben ist zweifach:
beforeEach
console.log
auszuführenDie Änderungen würden wie folgt aussehen:
beforeEach(done => {
// ...
axios.get(...);
setTimeout(() => {
console.log("%c server.requests", "color: #C78B41", server.requests);
done();
});
});
Beeindruckend. Das funktioniert! Vielen Dank. Endlich habe ich die Möglichkeit, erforderliche Tests zu erstellen.
Hilfreichster Kommentar
Ja, es gibt .
Die Lösung zum Anzeigen der Anforderungen in Ihrem
beforeEach
oben ist zweifach:beforeEach
console.log
auszuführenDie Änderungen würden wie folgt aussehen: