我目前正在一个项目中使用 Jest 进行单元测试和代码覆盖。
一切正常,除了模拟类/方法的覆盖范围。我似乎没有得到想要的覆盖结果。我试图在 Jest 文档中找到一些东西并在网上搜索答案,但我似乎找不到任何关于它的东西。
问题是,当我使用模拟实现(例如 ./services/__mocks__/UserService.js
)时,实际实现( ./services/UserService.js
)导致覆盖率为 0%。这是一个合乎逻辑的结果,因为实现被模拟覆盖。
我可以通过使用 /* istanbul ignore next */
来解决这个问题在实际服务中的每个方法上,或者只是将实际服务添加到 coveragePathIgnorePatterns
属性并让它为所有模拟类生成覆盖率,但我想知道是否有任何方法可以让 Jest 自动使用模拟实现来生成覆盖率结果。
模拟类/函数和代码覆盖率的方法是什么?
提前致谢!
最佳答案
正如文档中所说 for manual mocks ,您将使用 ./services/__mocks__/UserService.js
仅当您明确调用类似 jest.mock('./services/UserService');
的内容时.
如果您想为 ./services/UserService
编写测试,请确信您不使用 jest.mock('./services/UserService');
在此测试之前。
关于unit-testing - Jest - 如何覆盖模拟类和实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50348317/