首页 > 解决方案 > 如何在 Angular 7 中运行不同的测试配置

问题描述

默认情况下,我们有 .spec.ts 作为我们的测试文件。

我们有相同的配置。

"test": {
      "builder": "@angular-devkit/build-angular:karma",
      "options": {
        "main": "src/test.ts",
        "polyfills": "src/polyfills.ts",
        "tsConfig": "src/tsconfig.spec.json",
        "karmaConfig": "src/karma.conf.js",
        "styles": [
          "src/styles.scss"
        ],
        "scripts": ["node_modules/hammerjs/hammer.min.js"],
        "assets": [
          "src/favicon.ico",
          "src/assets"
        ],
        "codeCoverage": true
      }
    }

但是,如果我有两组测试文件,比如说spec.ts 和 spec1.ts。

我可以运行一个命令 ng test 来运行所有 .spec 文件并运行另一个命令来运行所有 *.spec1 文件。

我应该在 angular.json 中进行哪些更改

标签: angularkarma-jasmine

解决方案


我得到了一些可能对你有用的东西。

首先,我创建了tsconfig.spec.json文件的副本,并将其命名为tsconfig.spec1.json,我想您可以随意命名。这是文件的内容:

{
    "extends": "../tsconfig.json",
    "compilerOptions": {
        "outDir": "../out-tsc/spec",
        "types": [
        "jasmine",
        "node"
        ]
    },
    "files": [
        "test.ts",
        "polyfills.ts"
    ],
    "include": [
        "**/*.spec1.ts",
        "**/*.d.ts"
    ]
}

请注意文件部分中的**/*.spec1.tsglob 。includes

然后,在命令提示符下,我运行了以下命令:

ng t --include=**/*.spec1.ts --tsConfig=./src/tsconfig.spec1.json

我通过复制我拥有的其他一些规范文件创建了几个spec1.ts文件,并将它们重命名。上面的命令只运行这些文件中的测试。似乎工作。

试一试。真的没有太多的工作。

您可以将以下内容添加到package.jsonscripts的部分:

"test1": "ng t --include=**/*.spec1.ts --tsConfig=./src/tsconfig.spec1.json",

然后运行npm run test1以仅运行spec1测试。

我试图在没有的情况下运行上面的命令,--include=./**/*.spec1.ts因为它在我创建的新tsconfig文件中,但它不喜欢那样。

我还尝试创建test.ts的副本,并将其更改files为 include test1.ts,然后运行ng t --tsConfig=./src/tsconfig.spec1.json,不行。


推荐阅读