Sinon: A contagem de solicitações fakeServer é sempre nula

Criado em 6 jun. 2017  ·  4Comentários  ·  Fonte: sinonjs/sinon

  • Versão Sinon: 2.3.2
  • Ambiente: karma-test-runner
  • URL de exemplo:
  • Outras bibliotecas que você está usando: mocha

O que você esperava que fosse acontecer? Espero que a contagem de sinon.fakeServer.requests seja mais de 1

O que realmente acontece sinon.fakeServer.requests é sempre nulo

Como reproduzir

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


Eu chamo axios.get solicitações diretamente no código de teste e também é chamado no método componentWillMount de um componente react.js

Comentários muito úteis

Existe alguma maneira de iniciar o teste de HTML com fakeServer?

Sim, existe .

A solução para ver as solicitações em seu beforeEach acima é dupla:

  1. passe um retorno de chamada para a função beforeEach
  2. espere um momento para executar o console.log

As mudanças seriam assim:

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

Todos 4 comentários

axios.get() é assíncrono. Isso significa que quando sua linha console.log executada, o xmlhttprequest ainda não foi criado.

Obrigado pela resposta. Mas no caso de eu usar server.autoRespond = true; ou server.respondImmediately = true; ou server.respond(); server.requests ainda está vazio. É certo que essas coisas não funcionem?
Existe alguma maneira de iniciar o teste de HTML com fakeServer?

Existe alguma maneira de iniciar o teste de HTML com fakeServer?

Sim, existe .

A solução para ver as solicitações em seu beforeEach acima é dupla:

  1. passe um retorno de chamada para a função beforeEach
  2. espere um momento para executar o console.log

As mudanças seriam assim:

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

Uau. Isso funciona! Obrigado. Finalmente, consegui criar os testes necessários.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

kbirger picture kbirger  ·  3Comentários

NathanHazout picture NathanHazout  ·  3Comentários

tinganho picture tinganho  ·  3Comentários

stevenmusumeche picture stevenmusumeche  ·  3Comentários

brettz9 picture brettz9  ·  3Comentários