🙄

Axios createしたinstanceをJestでMockする

2023/09/27に公開

このようにbaseUrlなどを設定してaxios.createしたインスタンスをmockしたい。

const axiosInstance = axios.create({
  baseURL: 'http://localhost:3000',
  headers: {
    'Content-Type': 'application/json',
  },
})

axios-mock-adapterというモジュールが便利。
https://github.com/ctimmerm/axios-mock-adapter/issues

以下のようにmockを作成可能。
この例では、post requestに対して、response.data = { message: 'Hello world' }を返すmockになる。

import MockAdapter from 'axios-mock-adapter'
import { axiosInstance } from 'src/axios' // axios instanceのpath

let mock = new MockAdapter(axiosInstance)
mock.onPost().reply(200, { message: 'Hello world.' })

it('some test', async () => {
    // axiosを使用した関数のテスト
    // ...
})

Discussion