如何在使用 jest 模拟 axios.get 时传递 AxiosPrmoise 类型值?

Posted

技术标签:

【中文标题】如何在使用 jest 模拟 axios.get 时传递 AxiosPrmoise 类型值?【英文标题】:How to pass AxiosPrmoise type value while mocking axios.get using jest? 【发布时间】:2019-07-13 12:35:35 【问题描述】:

我尝试了下面的代码来模拟 axios.get() 函数,但是打字稿给了我“' data: expectedResult ' 类型的参数不可分配给 'AxiosPromise' 类型的参数”错误。 有人可以帮我处理这个错误吗?

    const expectedResult: string = 'result';

    const mock = jest.spyOn(axios, 'get');
    mock.mockReturnValueOnce( data: expectedResult );

    const result = await sut.getFeed("testUrl");

    expect(mock).toHaveBeenCalled();
    expect(result).toBe(expectedResult);

【问题讨论】:

【参考方案1】:

我从模拟函数中添加了 AxiosResponse 类型的返回值,它运行良好。

    const expectedResult: string = 'result';

    const feedResponsePromise = Promise.resolve( data: expectedResult  as AxiosResponse);

    const mock = jest.spyOn(axios, 'get');
    mock.mockReturnValueOnce(feedResponsePromise);

    const result = await sut.getFeed("testUrl");

    expect(result).toBe(expectedResult);

【讨论】:

以上是关于如何在使用 jest 模拟 axios.get 时传递 AxiosPrmoise 类型值?的主要内容,如果未能解决你的问题,请参考以下文章

axios在componentDidMount中获取数据后如何拍摄jest snapshot?

如何:通过带有打字稿的配置时模拟 axios

使用 jest.mock('axios') 时如何模拟拦截器?

使用 Jest 在 Nuxt 中测试组件时如何添加/模拟 Nuxt Auth 库

使用 Jest 测试 Vue3 组件时如何模拟计算属性

如何模拟在使用 Jest 测试的 React 组件中进行的 API 调用