reactjs - 无法使用 jest 进行手动模拟工作
问题描述
我正在尝试进行手动模拟,但它不起作用。我的测试文件 Comp.test.tsx 正在测试一个组件 Comp.tsx 。我的 Comp.tsx 具有从另一个文件 Comp.action.ts(名为导出)导入的操作。我在 mount 时调用从 Comp.action.ts 导出的 abc() 方法,该方法返回 API 数据。
现在,我正在尝试模拟 Comp.action.ts 中的所有函数,以便可以使用虚拟数据进行测试。我创建__mocks__
了与 Comp.action.ts 相同级别的文件夹,并将文件 Comp.action.ts 放入其中。但是测试不会进入我的模拟文件,而是进入实际文件以获取数据。我曾多次尝试找出问题,但没有运气。我在这里做错了什么?
Comp.tsx
import {abc} from '../../Comp.action.ts'
// on didmount
abc() // it calls the api and stores the result in redux store
Comp.action.ts
export const abc = () => {
console.log('actual')
return (dispatch:Dispatch<any>) => {
dispatch({type: LOADING});
networkCall("get", `/channels`, url)
.then((res:any)=>{
if(res.error && isEmpty(res.error)){
dispatch({ type: SUCCESS, payload: {res: res}});
}else{
dispatch({ type: FAILED, payload: {error: res}});
}
}).catch((error)=>{
if(error?.response?.data){
dispatch({ type: FAILED, payload: {error: error.response.data}});
}
});
}
}
__mocks__/Comp.action.ts
jest.mock('../Comp.action.ts)
export const abc = () => {
console.log('mocked')
// return some dummy data
return data
}
最后是我的测试文件 Comp.test.tsx
test('it should display whatsapp plans text', () => {
const component = mount(
<Comp />
)
})
我的理解是它应该从在 didmount 上调用 abc() 时获取虚拟数据,__mocks__/Comp.action.ts
但事实并非如此。我如何实现这一目标?
解决方案
推荐阅读
- javascript - 突出显示当前菜单项?
- azure - AAD 应用注册中已存在具有相同属性标识符 Uris 值的另一个对象
- api - 使用日期查询使用 GitHub API 搜索存储库
- c++ - 在 GLSL 着色器中使用多个纹理时,纹理会被覆盖
- python - 如何在python中以大写字母更改单词的第i个字母?
- javascript - 使用 jquery.validate.min.js 进行表单验证
- sql - 如何根据在另一个数据库中遇到的参数创建 SQL 数据库
- swift - 为什么将两个小数双精度数相乘并将结果转换为字符串会导致多余的零?
- python - 使用 python 阅读 pdf 杂货传单
- json - 如何在不覆盖数据的情况下加入/合并/更新 JSON 字典