Sinon: El recuento de solicitudes de fakeServer siempre es nulo

Creado en 6 jun. 2017  ·  4Comentarios  ·  Fuente: sinonjs/sinon

  • Versión Sinon: 2.3.2
  • Entorno: karma-test-runner
  • URL de ejemplo:
  • Otras bibliotecas que está utilizando: mocha

Qué esperabas que sucediera? Espero que el recuento de sinon.fakeServer.requests sea más de 1

Lo que realmente sucede sinon.fakeServer.requests siempre es nulo

Como reproducir

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


Llamo axios.get solicitudes directamente en el código de prueba y también se llama en el método componentWillMount de un componente react.js

Comentario más útil

¿Hay alguna forma de iniciar pruebas HTML con fakeServer?

Si lo hay .

La solución para ver las solicitudes en su beforeEach anterior es doble:

  1. pasar una devolución de llamada a la función beforeEach
  2. espere un momento para ejecutar el console.log

Los cambios se verían así:

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

Todos 4 comentarios

axios.get() es asincrónico. Esto significa que cuando sus console.log carreras de línea, el xmlhttprequest no ha sido creada todavía.

Gracias por la respuesta. Pero en el caso en que uso server.autoRespond = true; o server.respondImmediately = true; o server.respond(); server.requests todavía está vacío. ¿Es correcto que esas cosas no funcionen?
¿Hay alguna forma de iniciar pruebas HTML con fakeServer?

¿Hay alguna forma de iniciar pruebas HTML con fakeServer?

Si lo hay .

La solución para ver las solicitudes en su beforeEach anterior es doble:

  1. pasar una devolución de llamada a la función beforeEach
  2. espere un momento para ejecutar el console.log

Los cambios se verían así:

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

Guau. ¡Eso funciona! Gracias. Finalmente, encontré la manera de crear las pruebas requeridas.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

stevenmusumeche picture stevenmusumeche  ·  3Comentarios

fearphage picture fearphage  ·  3Comentarios

zimtsui picture zimtsui  ·  3Comentarios

akdor1154 picture akdor1154  ·  4Comentarios

ljian3377 picture ljian3377  ·  3Comentarios