Sinon: Le nombre de requêtes fakeServer est toujours nul

Créé le 6 juin 2017  ·  4Commentaires  ·  Source: sinonjs/sinon

  • Sinon version : 2.3.2
  • Environnement : karma-test-runner
  • Exemple d'URL :
  • Autres bibliothèques que vous utilisez : moka

Que vous attendiez-vous à ce qu'il se passe? Je suppose que sinon.fakeServer.requests compte était supérieur à 1

Que se passe- t-

Comment reproduire

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);
   });
});


J'appelle les requêtes axios.get directement dans le code de test et il est également appelé dans la méthode componentWillMount d'un composant react.js

Commentaire le plus utile

Existe-t-il un moyen de lancer des tests HTML avec fakeServer ?

Oui, il y a .

La solution pour voir les requêtes dans votre beforeEach ci-dessus est double :

  1. passer un rappel à la fonction beforeEach
  2. attendez un instant pour exécuter le console.log

Les changements ressembleraient à :

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

Tous les 4 commentaires

axios.get() est asynchrone. Cela signifie que lorsque votre ligne console.log s'exécute, le xmlhttprequest n'a pas encore été créé.

Merci d'avoir répondu. Mais dans le cas où j'utilise server.autoRespond = true; ou server.respondImmediately = true; ou server.respond(); server.requests est toujours vide. Est-il juste que ces choses ne fonctionnent pas ?
Existe-t-il un moyen de lancer des tests HTML avec fakeServer ?

Existe-t-il un moyen de lancer des tests HTML avec fakeServer ?

Oui, il y a .

La solution pour voir les requêtes dans votre beforeEach ci-dessus est double :

  1. passer un rappel à la fonction beforeEach
  2. attendez un instant pour exécuter le console.log

Les changements ressembleraient à :

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

Wow. C'est des travaux ! Merci. Enfin, j'ai eu le moyen de construire les tests requis.

Cette page vous a été utile?
0 / 5 - 0 notes