我有一个服务,有时我需要调用外部 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 }); }); });