【发布时间】:2018-10-25 04:13:45
【问题描述】:
我目前正在做一个项目,我正在使用 Jest 进行单元测试和代码覆盖。
一切正常,除了模拟类/方法的覆盖范围。我似乎没有得到想要的覆盖结果。我试图在 Jest 文档中找到一些内容并在线搜索答案,但我似乎找不到任何相关内容。
问题是,当我使用模拟实现(例如./services/__mocks__/UserService.js)时,实际实现(./services/UserService.js)导致覆盖率为 0%。这是一个合乎逻辑的结果,因为实现被模拟覆盖了。
我可以通过在实际服务中的每个方法上使用 /* istanbul ignore next */ 来解决这个问题,或者只是将实际服务添加到 Jest 设置文件中的 coveragePathIgnorePatterns 属性中,并让它为所有模拟类生成覆盖范围,但我想知道是否有任何方法可以让 Jest 自动使用模拟实现来生成覆盖结果。
模拟类/函数和代码覆盖率的方法是什么?
提前致谢!
【问题讨论】:
-
通常像
UserService.js这样的服务会在依赖它的代码的单元测试中被模拟,但也会有自己的单元测试来确保它正常工作。
标签: unit-testing mocking code-coverage jestjs