如何使用 jest 測試使用 axios 的 httpClient?
P粉659378577
P粉659378577 2023-09-15 20:55:32
0
1
716

我有一個服務,有時我需要呼叫外部 API。為了讓這個呼叫更容易編寫,我創建了一個 httpService。目前我只有一個 post 方法來接收 url 和資料。

import axios from 'axios'

const httpClient = axios.create({
  headers: {
    common: {
      'Content-Type': 'application/json'
    }
  }
})

export async function post(url, data) {
  try {
    const response = await httpClient.post(url, data)
    return response.data
  } catch (error) {
    console.log(error)
    throw new Error('Error in POST request')
  }
}

我需要使用 jest 為這段程式碼編寫一些測試,但由於我的 url 是通用的,我想傳遞一個像「http://test.com/api」這樣的 url 並偽造一個正面的結果。我怎樣才能做到這一點?

P粉659378577
P粉659378577

全部回覆(1)
P粉575055974

您可以使用 axios-mock-adapter 套件:

例如

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';

const mock = new MockAdapter(axios);

describe('76630221', () => {
    test('should pass', async () => {
        const { post } = await import('./');
        mock.onPost('http://test.com/api').reply(200, {
            code: 0,
            message: null,
        });
        const data = await post('http://test.com/api', { name: 'nick' });
        expect(data).toEqual({ code: 0, message: null });
    });
});
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板