为简单起见,我在 stackblitz 中创建了一个示例应用程序.
Hello 组件使用了一个实用程序函数,我需要模拟该函数来测试它。
const hmmm = mockMe();
const Hello = () => (
<div>
<h1>Hello StackBlitz!</h1>
<p>{hmmm}</p>
</div>
);
我尝试了几种方法来模拟该函数,例如:import * as utils from '../utils';
describe('Hello component', () => {
it('should mock the utility function', () => {
jest.spyOn(utils , 'mockMe').mockReturnValue("Mocked!");
// render the component and test it
}
}
我的问题是 Hello.js 在测试文件之前运行。因此,它在应用模拟之前执行实用程序函数。我能想到的唯一解决方案是更改组件代码并将调用移动到渲染函数内的实用程序。我想避免这种变化。
有没有办法模拟效用函数并保持代码不变?
最佳答案
在使用 utils
中的方法之前你需要模拟 utils
文件夹。例如,jest.mock('../utils');
关于reactjs - 用于脚本加载的模拟实用程序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64400604/