Jest - 如何获得模拟类和实现的覆盖范围

时间:2018-05-15 10:49:03

标签: unit-testing mocking code-coverage jestjs

我目前正在开展一个项目,我正在使用Jest进行单元测试和代码覆盖。

除了模拟类/方法的覆盖范围外,一切正常。我似乎无法获得所需的覆盖率结果。我试图在Jest文档中找到一些内容并在网上搜索答案,但我似乎无法找到任何相关内容。

当我使用模拟实现(例如./services/__mocks__/UserService.js)时,实际实现(./services/UserService.js)导致覆盖率为0%。这是一个合乎逻辑的结果,因为模拟会覆盖实现。

我可以通过在实际服务中的每个方法上使用/* istanbul ignore next */来解决这个问题,或者只是将实际服务添加到Jest设置文件中的coveragePathIgnorePatterns属性,并让它为所有模拟类生成覆盖范围相反,但我想知道是否有任何方法让Jest自动使用模拟实现来生成覆盖结果。

模拟类/函数和代码覆盖的方法是什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

正如文档中的discord.js official documentaion所述,只有明确调用了./services/__mocks__/UserService.js之类的内容后,您才能使用jest.mock('./services/UserService');

如果您想为./services/UserService编写测试,请确信在此测试之前不要使用jest.mock('./services/UserService');