搜索

首页  >  问答  >  正文

如何使用 jest 测试使用 axios 的 httpClient?

我有一个服务,有时我需要调用外部 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粉659378577P粉659378577443 天前710

全部回复(1)我来回复

  • P粉575055974

    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 });
        });
    });

    回复
    0
  • 取消回复