Sinon: Die Anzahl der fakeServer-Anfragen ist immer null

Erstellt am 6. Juni 2017  ·  4Kommentare  ·  Quelle: sinonjs/sinon

  • Sinon-Version: 2.3.2
  • Umgebung : karma-test-runner
  • Beispiel-URL:
  • Andere Bibliotheken, die Sie verwenden: Mokka

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

Hilfreichster Kommentar

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:

  1. einen Rückruf an die Funktion beforeEach
  2. Warten Sie einen Moment, um die console.log auszuführen

Die Änderungen würden wie folgt aussehen:

beforeEach(done => {
  // ...
  axios.get(...);
  setTimeout(() => {
    console.log("%c server.requests", "color: #C78B41", server.requests);
    done();
  });
});

Alle 4 Kommentare

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:

  1. einen Rückruf an die Funktion beforeEach
  2. Warten Sie einen Moment, um die console.log auszuführen

Die Ä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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen