【问题标题】:Cannot start ng test with --reporters option anymore无法再使用 --reporters 选项启动 ng 测试
【发布时间】:2018-12-22 17:49:35
【问题描述】:

我已经在 Angular 5 应用程序上工作了一段时间,通常使用以下命令开始我的测试:

ng test --reporters dots

这按预期工作。我最近开始了一个新的 Angular 6 项目,并认为我可以使用相同的命令来运行我的业力测试,但每当我尝试指定 --reporters 时,我都会收到以下错误:

Data path ".reporters" should be array.

这个错误对我来说没有多大意义,它到底在哪里需要这个数组。我在 karma.conf.js 中有一个 reporters: 数组,但它与我在 Angular 5 项目中的相同。

作为记录,ng test 工作得很好,但我更喜欢点输出用于本地测试。我还应该指定我尝试从命令行运行的任何报告器也显示这种确切的行为。我也无法运行我想要的报道记者。

这是我的karma.conf.js。相关记者栏目:

reporters: ['spec', 'kjhtml'],

我也试过添加'dots',但没有效果。

我的 package.json 在脚本中有以下两行:

"test": "ng test --code-coverage",
"watch": "ng test --reporters dots",

npm run test 工作正常,但npm run watch 不行。它给出了上面报告的错误。

相关的devDependencies:

"@angular-devkit/build-angular": "~0.10.7",
"@angular/cli": "6.2.7",
"karma": "^1.7.1",
"karma-chrome-launcher": "^2.2.0",
"karma-cli": "^1.0.1",
"karma-coverage-istanbul-reporter": "^2.0.4",
"karma-jasmine": "^1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-mocha-reporter": "^2.2.1",
"karma-remap-istanbul": "^0.2.1",
"karma-spec-reporter": "0.0.32",

【问题讨论】:

  • @Mordred,您的 package.json 是否包含 "test": "ng test" 这一行?还是有一些额外的参数?你能说明你的reporters 变量是如何在karma.conf.json 中定义的吗?
  • @SaddamPojee 添加了更多信息。
  • @Mordred 有了上面的配置,我仍然可以成功运行npm run watch 命令。我会建议将您的 angularangular-cli 更新到最新版本。

标签: angular karma-jasmine karma-runner


【解决方案1】:

您可以通过growlreporter 尝试添加点。

npm install karma-growl-reporter --save-dev

karma.conf.js中设置配置

config.set({
    plugins: [
         require('karma-growl-reporter'),
         ...
    ],
    ...
    reporters: ['spec', 'kjhtml', 'growl'],
 });

更新

如果您从 Angular/CLI (v 6.2.7) 安装 karma,则需要将其更新到 v7.0.2(devDependencies 中的 "@angular/cli": "~7.0.2")。

我认为是因为在v6.2.7 中没有提供reporters 键(我在schema.json 中没有找到reporters,但是有v7.0.2

更新
this 问题我们可以看到 v6.x.x 是删除标志--reporter。这意味着我们无法从控制台生成报告(ng test --reporter 不起作用)。

默认情况下,当我们创建和添加另一个 karma2.conf.js 时,会有一个变体,例如:

module.exports = function (config) {
  config.set({

    plugins: [
     ....
         require('karma-growl-reporter'),
     ....
    ]
    ...
    porters: ['dots'],

并从控制台调用ng test --karma-config PATH_TO_ANOTHER_KONF_FILE.js

【讨论】:

  • 问题不在于我没有点记者,而是我无法指定任何记者。无论我尝试从命令行使用哪个记者,我都会收到 Data path ".reporters" should be array. 错误。
  • 更新 "@angular/cli": "6.2.7", 到 "@angular/cli": "~7.0.2",
  • 目前,我不能这样做。该项目的一些依赖项还不支持 Angular 7。
  • 更新了答案。从 github.com/angular/angular-cli/issues/10852 你可以创建另一个 karma2.conf.js 并只设置你的记者 dots
  • 谢谢!这似乎是现在的正确答案。直到新年之后我回到办公室时才能测试和接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多