此问题在此处已有答案:
How to mock functions in the same module using Jest?(10个答案)
两年前关闭。
我是一个JavaScript开发新手,我在单元测试方面遇到了麻烦。我使用Jest。我使用Node.js 13.14.0运行测试(我使用旧版本,因为我有Windows 7).我有以下问题:我需要从我测试的函数所在的同一个模块中模拟一个函数。简单地说,该函数从同一个模块中调用另一个函数,我想确保它被调用。在Google上搜索后,我没有找到完整的解决方案。我喜欢使用rewire插件的选项,但这会破坏代码覆盖率。我从模块导出函数如下:
module.exports = {
functions...
}
字符串
然后我使用require将它们导入到测试文件中。
我看到遇到这个问题的人被建议使用ES6模块的一些方法,但我还没有能够弄清楚如何使它们工作,我没有迫切需要在我的项目中使用它们。那么,是否有任何成熟的解决方案?也许我应该使用不同的测试框架?我真的不明白为什么这个问题会存在。每个模块使用一个函数是一种常见的做法吗?
无论如何,我正在寻找一些简单的方法,如使用重新布线:
const otherFuncMock = module.__set__(otherFunc, jest.fn())
module.func() // calls otherFunc()
expect(otherFuncMock).toHaveBeenCalledTimes(1)
型
1条答案
按热度按时间2sbarzqh1#
如果otherFunc是由模块导出的,那么只需使用jest.fn()来模拟它就可以了
字符串
如果它没有被导出,那么我建议你不需要这个测试。它调用另一个函数的事实是一个内部实现问题,你最好专注于测试组合函数执行的结果。