Angular 库二级入口点测试代码覆盖率问题

Posted

技术标签:

【中文标题】Angular 库二级入口点测试代码覆盖率问题【英文标题】:Angular library secondary entrypoint test code coverage problem 【发布时间】:2021-01-02 08:11:44 【问题描述】:

我正在使用带有辅助入口点的 Angular 库 我的库文件夹结构是

我的图书馆 二级入口1 服务 1 辅助入口点 2 服务 2 源代码

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

辅助入口点的服务测试不执行。

然后我尝试将“test.ts”上下文路径('./')更改为 src 文件夹下的 '../'。 执行了测试,但没有创建代码覆盖率。

如何为辅助入口点执行测试?

【问题讨论】:

【参考方案1】:

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

要解决这个问题,只需将“angular.json”文件中的 sourceRoot 属性更改为 projects/your-library,其他一切都应该可以正常工作。

【讨论】:

我有多个二级入口。所以我不能在 angular.json 上设置 sourceroot 属性 所有辅助入口点都具有相同的根,因此按照您在 angular.json 中的示例,您应该设置 "sourceRoot": "projects/my-library" 而不是 "sourceRoot": "projects/my-library/src",这是 Angular 设置的默认值 我得到了 Mert 的答案,方法是将 test.ts 文件移动到“project/my-library”级别并将我的 tsconfig.spec.ts 文件从“src/test.ts”更改为“test.ts”

以上是关于Angular 库二级入口点测试代码覆盖率问题的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6 代码覆盖率...如何在应用程序的代码覆盖率中排除本地库?

Angular 11 单元测试代码覆盖率现已突破

Angular 单元测试中业力代码覆盖率报告中的 1x 3x 等是啥意思?

Angular 1.x Browserify Jasmine 如何设置代码覆盖测试?

如何在订阅Angular7单元测试用例中对代码进行单元测试

Azure DevOps:如何为不同的测试(.net core、angular)合并两个代码覆盖率报告