Angular库次要入口测试代码覆盖率问题

5

我正在使用带有次要入口的Angular库。

我的库文件夹结构如下:

  • my-library
    • secondary-entrpoint 1
      • service 1
    • secondary-entrypoint 2
      • service 2
    • src

我使用了这个命令:ng test my-library --code-coverage

次要入口点的服务测试不会执行。

然后,我尝试将“test.ts”的上下文路径('./')更改为位于src文件夹下的“../”。测试得以执行,但代码覆盖率未生成。

如何对次要入口点执行测试?

1个回答

9

这是因为您项目的源根目录指向 projects/your-library/src,在运行测试时没有考虑其他入口点。

要解决此问题,只需在您的 "angular.json" 文件中更改 sourceRoot 属性为 projects/your-library,其他部分应该仍然可以正常工作。


我有多个次要入口点,因此无法在angular.json上设置sourceroot属性。 - Mert yılmaz
2
你所有的次要入口都有相同的根目录,所以按照你在 angular.json 中的示例,你应该设置 "sourceRoot": "projects/my-library" 而不是 Angular 默认设置的 "sourceRoot": "projects/my-library/src" - Andres Ballester
我通过将test.ts文件移动到“project/my-library”级别,并将tsconfig.spec.ts文件从“src/test.ts”更改为“test.ts”,成功实现了Mert的答案。 - Ken
它对我非常有效。谢谢,伙计 :) - Shadowalker
将 test.ts 上移一级后,无需在 angular.json 中更改 sourceRoot,只需更改 test/options/main 路径即可。 - Victor Zakharov
1
实际上,尽管运行了测试,但它们并未反映在代码覆盖率报告中。无论是否更改sourceRoot,只有主要端点显示在覆盖范围内。有什么办法可以解决这个问题吗? - Victor Zakharov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接