升级到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文件。