LoginSignup
12
4

More than 3 years have passed since last update.

JestによるAxiosモック化方法の覚え書き

Posted at

この記事について

Jestによる単体テストで、HTTPリクエスト送信ではおなじみのライブラリ・Axiosをモック化するに少々手間取ったことがあったので、その方法について記したものです。

環境情報

  • Jest: 25.1.0
  • Axios: 0.19.1

モック化の方法

シンプルなパターン

HTTPリクエストを送信するための関数(axios.post, get, put, deleteなど)は、jest.spyOnだけでモックにすることが可能です。


import axios from 'axios';

jest.mock('axios');
const postApiMock = jest.spyOn(axios, 'post').mockName('axios-post');

// モックの戻り値を適宜セット
postApiMock.mockResolvedValue({});

カスタム設定のある場合

axios.createを使うと、設定をカスタマイズしたaxiosインスタンスが取得できますが、前述の方法だけではモック化が出来なくなります(初期化処理でエラーとなります)。
そこで、インスタンスを生成するファクトリメソッド自体をモック化することで対処します。
jest.mockの第2引数についての説明は、Jestのドキュメントも参考にしてください。

const mockApi = jest.fn().mockName('mock-api');
jest.mock('axios', () => ({
  __esModule: true,
  default: {
    create: jest.fn(() => {
      return {
        interceptors: {
          request: { use: jest.fn() },
          response: { use: jest.fn() },
        },
        post: mockApi,
      };
    }),
  },
}));
12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4