web-dev-qa-db-ja.com

axios-mock-adapterを使用してリクエストが行われたことをどのように確認しますか?

私は使用しています https://github.com/ctimmerm/axios-mock-adapter

エンドポイントがテスト対象のシステムによって実際に呼び出されたことを確認する方法を知りたいのですが。

この例では:

var axios = require('axios');
var MockAdapter = require('axios-mock-adapter');

// This sets the mock adapter on the default instance
var mock = new MockAdapter(axios);

// Mock any GET request to /users
// arguments for reply are (status, data, headers)
mock.onGet('/users').reply(200, {
  users: [
    { id: 1, name: 'John Smith' }
  ]
});

Get on '/ users'が呼び出されたかどうかはどうすればわかりますか?

私はあなたがジェストでできることに似た何かを探しています:

expect(mockFunc).toHaveBeenCalledTimes(1)

関数を使用して応答したり、要求が行われたかどうかを示すローカル変数を設定したりするときに、カスタムロジックを使用できることに気付きました。これを行うためのよりクリーンな方法があるかどうか疑問に思っていました。

12
Daryn

axios-mock-adapterにはこの機能が組み込まれていないようですが、jestを使用している場合は、jest.spyOnを使用できます。

上記の例では

let spy = jest.spyOn(axios, "get");
//run http request here
expect(spy).toHaveBeenCalled();

注:使用しているものによっては、expectステートメントをsetTimeout(function、0)でラップして正しく機能させる必要がある場合があります。

8
Perogy