开玩笑-如何获得关于模拟类和实现的报道

Jef*_*ard 6 unit-testing code-coverage mocking jestjs

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

除了模拟类/方法的覆盖范围之外,其他所有东西都工作正常。我似乎没有得到想要的覆盖率结果。我试图在Jest文档中找到某些内容,并在网上搜索了答案,但似乎找不到任何答案。

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

我可以通过/* istanbul ignore next */在实际服务中的每种方法上使用此方法来解决此问题,或者只是将实际服务添加到coveragePathIgnorePatternsJest安装文件中的属性中,然后让它为所有模拟类生成覆盖率,但是我想知道是否有任何方法可以拥有Jest自动使用模拟的实现来生成覆盖率结果。

模拟类/函数和代码覆盖范围是什么?

提前致谢!

hal*_*hal 1

正如文档中所说的手动模拟./services/__mocks__/UserService.js只有在明确调用类似jest.mock('./services/UserService');.

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

  • 在OP的描述中,他们提到:“一切都工作正常,除了模拟类/方法的覆盖范围”我个人很好奇如何模拟一个方法(例如使用 jest.fn() ),但然后开玩笑不觉得有必要告诉我错过了该方法的覆盖范围)我在 Vue 组件中有一个方法来处理我已经充分测试的事件,并且我觉得添加另一个单元测试来直接测试该方法会增加不必要的耦合没有额外的好处。 (2认同)