Sinon: fakeServerリクエスト数は常にnullです

作成日 2017年06月06日  ·  4コメント  ·  ソース: sinonjs/sinon

  • シノンバージョン:2.3.2
  • 環境:karma-test-runner
  • 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リクエストを直接呼び出します。また、react.jsコンポーネントのcomponentWillMountメソッドでも呼び出されます。

最も参考になるコメント

fakeServerでHTMLテストを開始する方法はありますか?

はい、あります

上記のbeforeEachリクエストを確認するための解決策は、次の2つです。

  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はまだ空です。 それらがうまくいかないのは正しいですか?
fakeServerでHTMLテストを開始する方法はありますか?

fakeServerでHTMLテストを開始する方法はありますか?

はい、あります

上記のbeforeEachリクエストを確認するための解決策は、次の2つです。

  1. beforeEach関数にコールバックを渡します
  2. console.logを実行するために少し待ちます

変更は次のようになります。

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

わお。 それはうまくいきます! ありがとう。 最後に、必要なテストを作成する方法を取得しました。

このページは役に立ちましたか?
0 / 5 - 0 評価