Sinon: Количество запросов fakeServer всегда равно нулю

Созданный на 6 июн. 2017  ·  4Комментарии  ·  Источник: sinonjs/sinon

  • Версия Sinon: 2.3.2
  • Окружающая среда: бегун-испытатель кармы
  • Пример URL:
  • Другие библиотеки, которые вы используете: mocha

Чего вы ожидали? Я ожидаю, что количество sinon.fakeServer.requests было больше 1

Что на самом деле происходит sinon.fakeServer.requests всегда имеет значение null

Как воспроизвести

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


Я вызываю запросы axios.get непосредственно в тестовом коде, а также он вызывается в методе componentWillMount компонента response.js.

Самый полезный комментарий

Есть ли способ запустить HTML-тестирование с помощью fakeServer?

Да, есть .

Решение для просмотра запросов в вашем beforeEach выше двоякое:

  1. передать обратный вызов функции beforeEach
  2. подождите, чтобы запустить console.log

Изменения будут выглядеть так:

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

Все 4 Комментарий

axios.get() - асинхронный. Это означает, что когда ваша строка console.log запускается, xmlhttprequest еще не был создан.

Спасибо за ответ. Но в случае, когда я использую server.autoRespond = true; или server.respondImmediately = true; или server.respond(); server.requests по-прежнему пуст. Это правда, что эти вещи не работают?
Есть ли способ запустить HTML-тестирование с помощью fakeServer?

Есть ли способ запустить HTML-тестирование с помощью fakeServer?

Да, есть .

Решение для просмотра запросов в вашем beforeEach выше двоякое:

  1. передать обратный вызов функции beforeEach
  2. подождите, чтобы запустить console.log

Изменения будут выглядеть так:

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

Вот это да. Это работает! Спасибо. Наконец, я получил способ создавать необходимые тесты.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги