我有一個服務,有時我需要呼叫外部 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粉5750559742023-09-16 18:54:17
您可以使用 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 }); }); });