小编Ric*_*ann的帖子

@nrwl/nx Angular 在一次测试运行中运行所有覆盖率测试,以获取我的 mono 存储库中的所有覆盖代码

我正在我的 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)

code-coverage jestjs monorepo angular nrwl-nx

10
推荐指数
1
解决办法
1万
查看次数

如何在 mat-list-option (mat-selection-list) 项中添加辅助操作

怎么可能,在 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)

angular-material2 angular angular-material-7

5
推荐指数
1
解决办法
6614
查看次数