升级到Angular 13->14后,在Jest调试时出现`Error: Unknown arguments: testMatch, runInBand`错误的解决方法是什么?

首先

以下是关于在将Angular的测试框架迁移到Jest后,
在升级到Angular 14时遇到的错误的备忘录。
尽管只是一个由于疏忽导致的错误,但我将其记录下来以作为警示。

错误时的版本


     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    

Angular CLI: 14.2.10
Node: 16.10.0
Package Manager: npm 7.24.0 
OS: linux arm64

Angular: 14.2.12
... animations, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.1402.10
@angular-devkit/build-angular      14.2.10
@angular-devkit/core               14.2.10
@angular-devkit/schematics         14.2.10
@angular/cdk                       14.2.7
@angular/cli                       14.2.10
@angular/material                  14.2.7
@angular/material-moment-adapter   14.2.7
@schematics/angular                14.2.10
rxjs                               6.5.5
typescript                         4.6.4

Phenomenon

升级到Angular14之后,在VSCode的调试器中执行调试操作时出现了以下错误。

Error: Unknown arguments: testMatch, runInBand

在使用命令 npx test ${filepath} 运行测试的同时,VSCode扩展 JestRunner 也遇到了相同的错误。

仔细确认后,我发现在 angular-builders 的 MIGRATION.MD 文件中有相关内容。

 

驼峰命名法的命令行参数已不再支持。

解决 (jiě jué)

由于VSCode调试器的参数问题,通过将settings.json中的args更改为短横线命名法,问题得以解决。?

变更之前

{
  // 省略
  "launch": {
    "configurations": [
      {
        "type": "node",
        "request": "launch",
        "name": "Jest All",
        "program": "${workspaceFolder}/node_modules/@angular/cli/bin/ng",
        "cwd": "${workspaceFolder}",
        "args": [
          "test",
          "--testMatch=\"**/+(*.)+(spec|test).+(ts|js)?(x)\"",
          "--runInBand"
        ],
        "console": "integratedTerminal",
        "internalConsoleOptions": "neverOpen"
      },
    ]
  },
  // 以下、省略
}

更改之后

{
  // 省略
  "launch": {
    "configurations": [
      {
        "type": "node",
        "request": "launch",
        "name": "Jest All",
        "program": "${workspaceFolder}/node_modules/@angular/cli/bin/ng",
        "cwd": "${workspaceFolder}",
        "args": [
          "test",
          "--test-match=\"**/+(*.)+(spec|test).+(ts|js)?(x)\"",
          "--run-in-band"
        ],
        "console": "integratedTerminal",
        "internalConsoleOptions": "neverOpen"
      },
    ]
  },
  // 以下、省略
}

总结

升级Angular版本时,请不要忘记检查angular-builders的MIGRATION.MD文件。

广告
将在 10 秒后关闭
bannerAds