Javascript 模仿一个函数开玩笑,但开玩笑地调用原始函数
我有一个返回true或false的函数,我们称它为myFuncJavascript 模仿一个函数开玩笑,但开玩笑地调用原始函数,javascript,reactjs,mocking,jestjs,Javascript,Reactjs,Mocking,Jestjs,我有一个返回true或false的函数,我们称它为myFunc myFunc (){ if(something){return true} else{return false} } 这就是它为了arg所做的 然后我把它叫做别的地方 if(myFunc()){ }else{ } 当我注销它时,它总是显示为错误。然而,当我在测试中这样嘲笑它时: const myMock = (myModule.myFunc = jest.fn()) myMock.mockReturnValue(tru
myFunc (){
if(something){return true}
else{return false}
}
这就是它为了arg所做的
然后我把它叫做别的地方
if(myFunc()){
}else{
}
当我注销它时,它总是显示为错误。然而,当我在测试中这样嘲笑它时:
const myMock = (myModule.myFunc = jest.fn())
myMock.mockReturnValue(true)
那么,当我从索引文件中记录它时,为什么它仍然返回为false呢?或者这不完全是模拟的工作方式吗?我猜myModule就是您导入的对象,然后您在该对象上设置了模拟函数。但是在myModule文件中,您直接引用该函数,而不是通过模块引用,对吗 正确的方法可能是将myFunc移出myModule。但是,如果您想将其保留在那里,则必须部分模拟myModule:
jest.mock('./myModule', () => {
return {
...require.requireActual('./myModule'),
myFunc: jest.fn()
}
})
但是认真考虑把MyFunc移出MyMoCube,因为部分嘲弄是困难和迷惑的。我把它叫做别处……code>if(myFunc)应该是
if(myFunc())
,我错了吗?我不知道这是否与问题有关。令人担忧的拼写错误,好的地方,但不是主要问题的修复