unit-testing - Jest - 如何覆盖模拟类和实现

标签 unit-testing mocking code-coverage jestjs

我目前正在一个项目中使用 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/

相关文章:

javascript - 如何在 mocha 测试的 for 循环中使用 "it"

c# - 如何在两个 Dictionary<string, List<string>> 对象之间进行值比较

unit-testing - 如何对复杂的方法进行单元测试

c# - 如何在 Xamarin 中创建和运行 PCL 代码测试?

python - 如何修补/模拟 logging.getlogger()

resharper - 使用 ReSharper、MSpec 和 dotCover 进行测试覆盖率

java - 如何为用 java 和 angular 编写的 Web 服务代码启用代码覆盖率

java - 枚举类型的 Emma 覆盖率

c# - JustMock - 检查传递的方法参数的值

c# - 是否需要对接口(interface)的定义进行单元测试?