测试带有笑话和酶的反应和打字稿,我该如何模拟ExpectsVideo函数,以便我可以根据我的测试用例Scenerio定义它是否返回true或false
jest.mock('utils/media-utils', () => ({
expectsVideo: () => true,
myOtherFunctions: jest.fn()
}));
utils / media-utils(如果要在我正在测试的react组件中导入文件)。如果我尝试从外部引用对象,则会给我错误说明无法使用超出范围的变量。 尝试了各种实现方式,但我遇到了不同的博客,但没有帮助。
答案 0 :(得分:3)
mockImplementation
在mocking whole module期间应该有所帮助:
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);
});
关于从外部返回错误并返回错误的BTW(来自jest.doMock
documentation的部分):
使用babel-jest时,对模拟的调用将自动提升到代码块的顶部。如果要明确避免这种行为,请使用此方法。
所以这就是为什么在模拟模块时都没有定义所有const
和let
的原因。