Javascript 为什么jest没有正确地模拟我导入的函数?
我所要做的就是导入一个我在代码中使用的util文件,并对其进行模拟,以便根据测试内容返回true或false 因此,我尝试从“utils/myFunction”中将*导入为myModule 在我的房间里我有Javascript 为什么jest没有正确地模拟我导入的函数?,javascript,reactjs,unit-testing,jestjs,Javascript,Reactjs,Unit Testing,Jestjs,我所要做的就是导入一个我在代码中使用的util文件,并对其进行模拟,以便根据测试内容返回true或false 因此,我尝试从“utils/myFunction”中将*导入为myModule 在我的房间里我有 export const myFunctionName=()=>{//does some stuff} constmyspy=jest.spyOn(myModule,'myFunctionName').mockReturnValue(false) 但即使我把这个改成 constmyspy=j
export const myFunctionName=()=>{//does some stuff}
constmyspy=jest.spyOn(myModule,'myFunctionName').mockReturnValue(false)
但即使我把这个改成
constmyspy=jest.spyOn(myModule,'myFunctionName').mockReturnValue(true)
当我console.log(myFunctionName)
在我的代码中时,它会同时注销false
我做错了什么?我如何正确地模拟这个命名的导出函数,以返回我想要的用于测试目的的任何内容
我也试过这个
beforeEach(() => {
myFunctionName.mockReturnValue(true)
})
但是在我的测试中
myFunctionName.mockReturnValueOnce(false)
没有效果,只有在每次调用spyOn和console.log之前的
中更改它时才会更改。但监视模块对象是不安全的,因为根据规范它是只读的。使用jest.mock.ok,但是我对jest.mock有问题,因为我需要每个测试用例使用不同的实现,但是jest.mock似乎只在顶部模拟一次,您无法更改它。我还尝试了jest.domock,同样的结果您可以随时使用*Once
方法临时更改实现。@EstusFlask请参阅添加的代码,以显示我在调用spyOn和console.log时未知的其他内容,如我所说。很可能是这样。显然,在调用函数之前应该对其进行模拟。如果希望多次调用它,那么应该有多个mockReturnValueOnce。