JestによるAxiosモック化方法の覚え書き
この記事について
Jestによる単体テストで、HTTPリクエスト送信ではおなじみのライブラリ・Axiosをモック化するに少々手間取ったことがあったので、その方法について記したものです。
環境情報
- Jest:
25.1.0
- Axios:
0.19.1
モック化の方法
シンプルなパターン
25.1.0
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,
};
}),
},
}));
Author And Source
この問題について(JestによるAxiosモック化方法の覚え書き), 我々は、より多くの情報をここで見つけました https://qiita.com/t-kubodera/items/f1b0029e4e98f99656b9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .