Reactjs 脚本加载时使用的模拟实用程序函数

Reactjs 脚本加载时使用的模拟实用程序函数,reactjs,unit-testing,jestjs,mocking,Reactjs,Unit Testing,Jestjs,Mocking,为了简单起见,我在中创建了一个示例应用程序 Hello组件使用我需要模拟的实用程序函数来测试它 const hmmm=mockMe(); 康斯特你好=()=>( 你好,斯塔克布里兹! {hmmm} ); 我尝试了几种模拟函数的方法,例如: import*作为来自“../utils”的utils; 描述('你好组件',()=>{ 它('应该模拟实用程序函数',()=>{ jest.spyOn(utils,“mockMe”).mockReturnValue(“Mocked!”); //渲染组件并测

为了简单起见,我在中创建了一个示例应用程序

Hello组件使用我需要模拟的实用程序函数来测试它

const hmmm=mockMe();
康斯特你好=()=>(
你好,斯塔克布里兹!
{hmmm}

);
我尝试了几种模拟函数的方法,例如:

import*作为来自“../utils”的utils;
描述('你好组件',()=>{
它('应该模拟实用程序函数',()=>{
jest.spyOn(utils,“mockMe”).mockReturnValue(“Mocked!”);
//渲染组件并测试它
}
}
我的问题是Hello.js在测试文件之前运行。因此,它在应用模拟之前执行实用程序函数

我能想到的唯一解决方案是更改组件代码,并将对实用程序的调用移动到渲染函数中。我希望避免这种更改


有没有办法模拟实用程序函数并保持代码不变?

在使用
utils
中的方法之前,您需要模拟
utils
文件夹。例如,
jest.mock(“../utils”)

您似乎没有使用jest.mock任何东西。与jest对象上的模块交互有各种选项:如果我更改代码,使函数在渲染函数中被调用,模拟工作正常。您确定我必须使用jest.mock吗?不管怎样,添加它不会影响我的测试和模拟不起作用。对于任何因“需要更多关注”(或任何其他原因)而投票关闭的人,请留下您缺少的内容的评论,以便我能够改进问题。谢谢!您可能错过了这一行:
jest.spyOn(utils,'mockMe')。mockReturnValue(“Mocked!”);