我目前正在开展一个项目,我正在使用Jest进行单元测试和代码覆盖。
除了模拟类/方法的覆盖范围外,一切正常。我似乎无法获得所需的覆盖率结果。我试图在Jest文档中找到一些内容并在网上搜索答案,但我似乎无法找到任何相关内容。
当我使用模拟实现(例如./services/__mocks__/UserService.js
)时,实际实现(./services/UserService.js
)导致覆盖率为0%。这是一个合乎逻辑的结果,因为模拟会覆盖实现。
我可以通过在实际服务中的每个方法上使用/* istanbul ignore next */
来解决这个问题,或者只是将实际服务添加到Jest设置文件中的coveragePathIgnorePatterns
属性,并让它为所有模拟类生成覆盖范围相反,但我想知道是否有任何方法让Jest自动使用模拟实现来生成覆盖结果。
模拟类/函数和代码覆盖的方法是什么?
提前致谢!
答案 0 :(得分:0)
正如文档中的discord.js official documentaion所述,只有明确调用了./services/__mocks__/UserService.js
之类的内容后,您才能使用jest.mock('./services/UserService');
。
如果您想为./services/UserService
编写测试,请确信在此测试之前不要使用jest.mock('./services/UserService');
。