我正在我的 nx Angular monorepo 的多个项目中运行测试,并且希望获得所有项目的单个代码覆盖率报告,其中所有代码文件都从测试中隐藏。测试运行似乎将分析的代码范围限制到当前的 nx 项目,并且我没有从基础库(从多个项目使用)获取覆盖率报告。这可能不是最佳实践,但我想分析哪些代码正在使用以及哪些代码可以重构/删除。
我已经尝试过一些解决策略,但没有一个能够解决我的所有问题。
我扩展了所有项目的 jest.config.js 并添加了覆盖范围和测试报告器(目前用于在 Azure DevOps 中发布/显示的 junit 和 cobertura)
笑话配置.js
module.exports = {
...
coverageReporters: ["cobertura", "html"],
...
reporters: [
"default",
["jest-junit", { outputDirectory: "coverage/libs/my-lib", outputName: "junit.xml" }]
],
collectCoverageFrom: [
"**/*.{ts,tsx}",
"!**/node_modules/**",
"!**/coverage/**",
"!**/vendor/**"
]
};
Run Code Online (Sandbox Code Playgroud)
运行所有项目
我尝试使用 nx run-many 命令运行每个应用程序和库中的所有测试。
nx run-many --all --target=test --parallel -- --collectCoverage --coverage
Run Code Online (Sandbox Code Playgroud)
我为每个测试/覆盖率报告提供了一个覆盖率文件夹,并且可能能够将它们合并到一个报告中(例如/sf/answers/4105434301/)。但并未包含所有源文件,并且覆盖运行始终仅限于一个项目(未记录多个应用程序中库代码的使用情况)。
运行全局笑话配置
第二种方法是运行全局笑话配置,直接抛出笑话。
node \"node_modules/jest/bin/jest.js\" -c \"jest.config.js\" --coverage --collectCoverage --coverageReporters=html --verbose=false
Run Code Online (Sandbox Code Playgroud)
我认为,这可能与第一种方法类似,因为 jest 也具有项目配置并独立运行每个项目。我得到一份覆盖范围和测试报告,其中包含所有结果。但也没有包含所有源文件,并且覆盖运行始终局限于一个项目(未记录多个应用程序中库代码的使用情况)。
module.exports = {
projects: getJestProjects(),
reporters: …Run Code Online (Sandbox Code Playgroud) 怎么可能,在 mat-list-option 元素内的 mat-selection-list 中添加辅助操作(mat-icon-button)。
目前所有项目都添加到 mat-list-text div 中。
示例(https://stackblitz.com/edit/angular-dwac7y):
<mat-selection-list [(ngModel)]="selectedOptions">
<mat-list-option *ngFor="let item of items;" [value]="item.id" [disableRipple]="true">
<mat-icon matListAvatar>person</mat-icon>
<h3 matLine> {{item.name}}</h3>
<p matLine>
{{item.details}}
</p>
<button mat-icon-button (click)="onEdit($event, item)">
<mat-icon>edit</mat-icon>
</button>
</mat-list-option>
</mat-selection-list>
Run Code Online (Sandbox Code Playgroud)