我有一个返回true或false的函数,让我们称之为myFunc
myFunc (){
if(something){return true}
else{return false}
}
这就是为了实现arg
然后我在别的地方叫它
if(myFunc()){
}else{
}
当我注销时,它会连续显示为false。但是,当我像这样在测试中嘲笑它时:
const myMock = (myModule.myFunc = jest.fn())
myMock.mockReturnValue(true)
那么当我从索引文件中记录它时,为什么它仍然返回false?还是那不是嘲笑的工作方式?
答案 0 :(得分:2)
我猜测myModule是您导入的对象,然后在该对象上设置了模拟功能。但是在myModule文件中,您是直接引用该函数,而不是通过模块引用,对吧?
正确的方法可能是将myFunc从myModule中移出。但是,如果您希望将其保留在那里,则将不得不部分模拟myModule:
jest.mock('./myModule', () => {
return {
...require.requireActual('./myModule'),
myFunc: jest.fn()
}
})
但是请认真考虑将myFunc移出myModule,因为部分模拟既困难又令人困惑。