我的组件测试文件中有一个像这样的模拟模块
jest.mock('../../../magic/index', () => ({
navigationEnabled: () => true,
guidanceEnabled: () => true
}));
这些函数将在我的组件的渲染函数中调用以隐藏和显示某些特定功能。
我想对这些模拟函数的返回值的不同组合进行快照。
假设我有一个这样的测试用例
it('RowListItem should not render navigation and guidance options', () => {
const wrapper = shallow(
<RowListItem type="regularList" {...props} />
);
expect(enzymeToJson(wrapper)).toMatchSnapshot();
});
要运行这个测试用例,我想将模拟模块函数返回值更改为 false
像这样动态
jest.mock('../../../magic/index', () => ({
navigationEnabled: () => false,
guidanceEnabled: () => false
}));
因为我已经导入了 RowListItem
组件,所以我的模拟模块不会再次重新导入。所以它不会改变。我该如何解决这个问题?
原文由 pashaplus 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以模拟该模块,使其返回间谍并将其导入您的测试:
然后稍后您可以使用
mockImplementation
更改实际实现在接下来的测试中