如何在控制台中获得更好的测试报告

How to get better test reports in the console?

本文关键字:更好 测试报告 控制台      更新时间:2023-09-26

我有一个相当简单的karma.config.js文件

basePath = '../';

files = [
  JASMINE,
  JASMINE_ADAPTER,
  'js/lib/angular*.js',
  'test/lib/angular/angular-mocks.js',
  'js/**/*.js',
  'test/unit/**/*.js'
];
autoWatch = true;
browsers = ['PhantomJS'];


当我运行karma start config/karma.conf.js --single-run时,我得到以下输出

$ karma start config/karma.conf.js --single-run
[2013-06-24 23:47:08.750] [DEBUG] config - autoWatch set to false, because of singleRun
INFO [karma]: Karma server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9 (Mac)]: Connected on socket id LwMoWxzIbSUuBsvIqB_m
PhantomJS 1.9 (Mac): Executed 6 of 6 SUCCESS (0.073 secs / 0.02 secs)

我一直在寻找一些东西来告诉我如何获得记录的测试的输出(例如SUCCESS Unit: services myService should behave

我能看到测试结果的唯一方法是打开Chrome并单击"调试",然后显示开发工具控制台。我想把消息注销到终端,但我不知道如何让它工作。

通过安装因果报应规范报告程序修复

npm install karma-spec-reporter --save-dev

并添加这个我的karma.config.js

reporters: ['spec'],

根据因果报应文件

默认情况下,因果报应加载所有与其同级的NPM模块,并且它们的名称与因果报应匹配。

但是有些用户不得不在配置中添加以下内容

plugins: ['karma-spec-reporter']

另一个细节-如果您在karma.config.js中保留默认的报告程序"progress",如下所示:

reporters: ["progress", "spec"]

或者另一个控制台报告程序,"spec"报告程序输出将不起作用。

您应该只保留"spec"一个,或者与其他浏览器报告器一起保留"spec"。例如:

reporters: ["spec", "coverage"]

我写了一个报告程序来提高输出的可读性:因果报应有用的报告程序

有一些不错的自定义选项:https://github.com/whyboris/karma-helpful-reporter

Instal指令在里面,基本上是npm install --save-dev karma-helpful-reporter,然后添加到Karma配置插件部分:

plugins: [ 
  require('karma-helpful-reporter')
],
reporters: [ 'helpful' ],

您也可以使用Karma mocha报告程序作为记者,您应该在控制台中有一个干净的报告。

npm i karma-mocha-reporter --save-dev
// karma.conf.js
module.exports = function(config) {
  config.set({
    frameworks: ['jasmine'],
    // reporters configuration
    reporters: ['mocha']
  });
};

有时,例如在@angular/cli环境中,您应该需要以下内容:

plugins: [
   ...
   require('karma-mocha-reporter'),
   ...
]

这是我的工作(草案)配置,没有"插件"部分(实际上我不完全理解为什么我需要指定它们…):

package.json

  "devDependencies": {
    [...]
    "grunt-karma": "~0.9.0",
    "karma": "~0.12.24",
    "karma-jasmine": "~0.2.3",
    "karma-chrome-launcher": "~0.1.5",
    "karma-phantomjs-launcher": "~0.1.4",
    "karma-spec-reporter": "0.0.13"
  }

karma.conf.js

module.exports = function (config) {
    config.set({
        frameworks: ['jasmine'],
        reporters: ['spec'],
        browsers: ['PhantomJS']
    });
};

Gruntfile.js

    karma: {
        options: {
            configFile: 'karma.conf.js',
            files: [
                'app/libs/angular.js',
                'app/libs/angular-resource.js',
                'app/libs/angular-route.js',
                [...] 
                'app/modules/**/*-spec.js'
            ]
        },
        unit: {
            singleRun: true
        }
    }

现在,当我运行grunt karma时,来自*-spec.js文件(describe('message', function() ...))的消息会很好地显示在控制台中。