reactjs - 具有不同返回值的 Jest jest.mock 函数
问题描述
用 jest 和酵素测试反应和打字稿,我将如何模拟这个 expectsVideo 函数,以便我可以根据我的测试用例场景定义它是否返回 true 或 false
jest.mock('utils/media-utils', () => ({
expectsVideo: () => true,
myOtherFunctions: jest.fn()
}));
utils/media-utils 如果在我正在测试的反应组件中导入文件。如果我尝试从外部引用对象,它会给我错误说明不能使用超出范围的变量。尝试了各种实现,我遇到了不同的博客,但没有帮助。
解决方案
mockImplementation
在模拟整个模块时应该有所帮助:
import * as mediaUtils from 'utils/media-utils';
mock('utils/media-utils'); // automocking whole module
it('....1...', () => {
mediaUtils.expectsVideo.mockImplementation(() => true);
});
it('....2...', () => {
mediaUtils.expectsVideo.mockImplementation(() => false);
});
顺便说一句,关于从外部引用返回错误的变量(来自jest.doMock
文档部分):
使用 babel-jest 时,对 mock 的调用将自动提升到代码块的顶部。如果您想明确避免此行为,请使用此方法。
所以这就是为什么 all const
andlet
甚至在模块被模拟时都没有定义的原因。
推荐阅读
- python - 如何为每个 ID 的特定变量创建滞后变量
- python - 如何在python中绘制两个比例非常不同的系列
- javascript - 除了 HTMLAnchorElement 之外,这个 html 元素的类型是什么
- c++ - mongocxx 驱动程序中的分段错误
- c# - C# 中等效的 GRG 非线性求解器
- javascript - 如何为网络图自定义颜色?
- sql - 列出系列中两个表之间的不同变体
- java - 每当我先输入更大的数字时,它都不会打印出任何东西
- c# - 在 C# 中,使用脚本将命令添加到 PowerShell InitialSessionState 并使其可从 C# 中发现
- python - 为什么这个结果比等效函数的另一个结果更准确