don*_*nut 6 javascript mocking reactjs jestjs
我有一个返回 true 或 false 的函数,我们称之为 myFunc
myFunc (){
if(something){return true}
else{return false}
}
Run Code Online (Sandbox Code Playgroud)
这就是它为了 arg 所做的
然后我在别处调用它
if(myFunc()){
}else{
}
Run Code Online (Sandbox Code Playgroud)
当我注销时,它不断地显示为假。但是,当我在测试中像这样嘲笑它时:
const myMock = (myModule.myFunc = jest.fn())
myMock.mockReturnValue(true)
Run Code Online (Sandbox Code Playgroud)
那么为什么当我从索引文件中记录它时它仍然返回错误?或者这不是嘲笑的工作原理?
我猜 myModule 是您导入的对象,然后您在该对象上设置了模拟功能。但是在 myModule 文件中,您是直接引用该函数,而不是通过模块引用,对吗?
正确的方法可能是将 myFunc 移出 myModule。但是如果你想把它保留在那里,那么你将不得不部分模拟 myModule:
jest.mock('./myModule', () => {
return {
...require.requireActual('./myModule'),
myFunc: jest.fn()
}
})
Run Code Online (Sandbox Code Playgroud)
但请认真考虑将 myFunc 移出 myModule,因为部分模拟很困难且令人困惑。
| 归档时间: |
|
| 查看次数: |
5414 次 |
| 最近记录: |