【问题标题】:Mocking a function jest but jest calling original function嘲笑一个函数,但开玩笑地调用原始函数
【发布时间】:2018-12-07 15:11:41
【问题描述】:

我有一个返回 true 或 false 的函数,我们称之为 myFunc

myFunc (){
  if(something){return true}
  else{return false}
}

这就是它为了 arg 而做的事情

然后我在别的地方调用它

if(myFunc()){

}else{
}

当我注销它时,它不断地显示为假。但是,当我像这样在测试中嘲笑它时:

const myMock = (myModule.myFunc = jest.fn())
myMock.mockReturnValue(true)

那么为什么当我从索引文件中记录它时它仍然返回为假?或者这不是模拟的工作原理?

【问题讨论】:

  • 然后我在其他地方调用它....if(myFunc) 应该是if(myFunc()),我错了吗?我不知道这是否与问题BTW有关
  • 抱歉打错了,好地方,但不是主要问题的修复

标签: javascript reactjs mocking jestjs


【解决方案1】:

我猜测 myModule 是您导入的对象,然后您在该对象上设置了模拟函数。但是在 myModule 文件中,您是直接引用该函数,而不是通过模块引用,对吧?

正确的方法可能是将 myFunc 移出 myModule。但是如果你想保留它,那么你将不得不部分模拟 myModule:

jest.mock('./myModule', () => {
  return {
    ...jest.requireActual('./myModule'),
    myFunc: jest.fn()
  }
})

但请认真考虑将 myFunc 移出 myModule,因为部分模拟既困难又令人困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多