我正在尝试使用Jest和Enzyme测试React组件,但是我的测试无法运行,因为它似乎在使用特定的节点模块时遇到了麻烦。实际上,破坏测试的模块是从我要测试的组件中导入的组件导入的。
以下是层次结构:
我运行此测试时:
import React from 'react';
import { shallow } from 'enzyme';
import { View } from 'react-native';
import { Insights } from '../../containers/Insights';
import insightsMockData from '../../mocks/data/insights';
describe('Insights Container', () => {
let cmp;
beforeEach(() => {
cmp = shallow(
<Insights
{...insightsMockData}
loadReports={jest.fn()}
fetchGraph={jest.fn()}
/>,
);
});
it('does stuff', () => {
console.log(cmp.debug());
});
});
我从控制台的Jest收到此错误:
如果我进入 Insights React组件并注释掉 BuildOnScrollHelper 组件(及其导入语句),则测试运行良好。
我有两个想法:
有人知道我会以一种被认为是好的做法来解决这个问题吗?我花了几个小时试图寻找解决方案,但仍然无法使我的测试正常工作。
理想情况下,我想要一个提供一些代码示例的答案,而不仅仅是一个文档的链接。
答案 0 :(得分:0)
检查此link。
模拟节点模块
如果您要模拟的模块是Node模块(例如lodash),则 模拟应放置在与之相邻的 mocks 目录中 node_modules(除非您将根配置为指向其他文件夹 比项目根目录),并会被自动模拟。没有啦 需要显式调用jest.mock('module_name')。
可以通过在目录中创建文件来模拟作用域模块 与作用域模块名称匹配的结构。例如, 模拟一个称为@ scope / project-name的作用域模块,在以下位置创建文件 模拟 / @ scope / project-name.js,相应地创建@ scope /目录。