首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟axios配置模块?

如何模拟axios配置模块?
EN

Stack Overflow用户
提问于 2020-12-18 09:40:26
回答 1查看 416关注 0票数 2

我有一个配置axios的模块:

代码语言:javascript
复制
// config/axiosConfig.js
import axios from 'axios';

const instance = axios.create({
    baseURL: 'http://localhost:8080/api/v1'
});

export default instance;

以及一个模块,该模块使用它进行api调用:

代码语言:javascript
复制
// store/actions.ts

import axiosInstance from 'config/axiosConfig';

export const fetchUsers = () => (dispatch: ThunkDispatch<{}, {}, AnyAction>) => {
    dispatch(loading(true));
    return axiosInstance.get('/users')
        .then(res => {
            dispatch(loading(false));
            dispatch(fetched(res.data));
        })
        .catch(err => dispatch(error(true)));
}

...

我想模拟axios配置文件来测试我的api文件。我试过很多种方法,但都没有用。我以为这会很简单

代码语言:javascript
复制
// store/actions.test.ts
import axiosInstance from 'config/axiosConfig';

jest.mock('config/axiosConfig');
axiosConfig.get.mockResolvedValue({users: mockUserList});

...

但我想事情不是这样的。

编辑:当我将axiosConfig.get.mockResolvedValue({users: mockUserList});放在测试中,而不是在模拟调用下时,问题中的方法就会奏效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-18 14:56:40

试一试(将它放在文件的顶部或beforeAllbeforeEach内部的顶部,取决于您喜欢什么):

代码语言:javascript
复制
jest.mock('config/axiosConfig', () => ({
  async get(urlPath) {
    return {
      users: mockUserList,
    };
  },
}));

这是一个使用工厂函数的简单模拟。为了在任何地方使用模拟,jest提供了一种更好的方法来避免重复自己。创建一个__mocks__目录,在该目录中,您可以创建模块,然后覆盖许多内置程序。然后,您可以只使用下面的代码就可以了。

代码语言:javascript
复制
// file.test.ts

jest.mock('fs')

// Rest of your testing code below

看一看官方文件,了解更多有关这方面的信息。

如果这不起作用,那么jest.config.jstsconfig.js中的模块解析设置可能会有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65354705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档