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

问题描述 投票:4回答:1

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

一切都运行正常,除了模拟类/方法的覆盖范围。我似乎没有得到理想的覆盖率结果。我试图在Jest文档中找到一些东西并在网上搜索答案,但我似乎找不到任何关于它的东西。

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

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

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

提前致谢!

unit-testing mocking code-coverage jestjs
1个回答
0
投票

正如在文档中说for manual mocks,只有当你明确地调用像./services/__mocks__/UserService.js这样的东西时才会使用jest.mock('./services/UserService');

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

© www.soinside.com 2019 - 2024. All rights reserved.