用Karma输出测试到浏览器

时间:2013-09-11 12:48:02

标签: javascript testing karma-runner

我正在使用Karma测试我的项目,并且可以看到测试在控制台窗口中传递失败,但是,如何在浏览器中显示这些?浏览器只有一个绿色条(即使测试失败)

  

Karma v0.10.2 - 已连接

写在里面。

我已经尝试将addong singleRun :false添加到karma.config.js文件中。

配置文件如下所示:

module.exports = function (config) {
    config.set({
        basePath: '../',

        files: [
            'app/lib/angular/angular.js',
            'app/lib/angular/angular-*.js',
            'test/lib/angular/angular-mocks.js',
            'app/js/**/*.js',
            'test/unit/**/*.js'
        ],

        autoWatch: true,
        singleRun: false,
        frameworks: ['jasmine'],

        browsers: ['Chrome'],

        plugins: [
            'karma-junit-reporter',
            'karma-chrome-launcher',
            'karma-firefox-launcher',
            'karma-jasmine'
        ],

        junitReporter: {
            outputFile: 'test_out/unit.xml',
            suite: 'unit'
        }

    })
}

4 个答案:

答案 0 :(得分:7)

matthias-schuetz写了一个声称可以生成html测试输出的插件。

https://npmjs.org/package/karma-htmlfile-reporter

除了插件页面上的说明,我还必须在Karma配置中包含对插件的引用 -

plugins: [
'karma-htmlfile-reporter'
]

答案 1 :(得分:0)

根据Documention,甚至不是很完美:

如果'单次运行'为假,它将设置启用ci模式,因此,将其设置为true,您将在浏览器的顶部栏上看到一些失败的红色状态。

答案 2 :(得分:0)

没有直接的方法与Karma这样做。 解决这个问题的“最佳”方法是蹲下并为业力写一个html记者(这将使我们很多其他业力用户非常高兴。)

如果这对你来说太多了,那么第二个最好的事情是使用生成xml文件的junit报告器。然后,您可以通过某种方式对xml文件进行后处理,将其转换为HTML文件,然后您可以在浏览器中查看该文件

答案 3 :(得分:0)

我想用Karma显示HTML5 Web Notifications所以我快速写了一些东西,让它与Karma版本0.11一起使用。可能与其他版本略有不同。我使用其余的应用程序脚本加载此脚本,它将存储业力测试结果,并在完成后将确定测试成功,然后重置为原始业力函数,以便在此脚本时不会更改它们再次运行。

// store all my test results
var results = [];
// Wrap the karma result function
var resultFunc = window.__karma__.result;
window.__karma__.result = function(result){
    // run the original function
    resultFunc(result);
    // push each result on my storage array
    results.push(result);
}

// wrap the karma complete function
var completeFunc = window.__karma__.complete;
window.__karma__.complete = function(result){
    // run the original function
    completeFunc(result);
    // determine success
    var success = results.every(function(r){ return r.success });

    if (success) {
        // display a success notification
    }
    else {
        // display a test failure notification
    }

    // reset the result function
    window.__karma__.result = resultFunc;
    // reset the complete function
    window.__karma__.complete = completeFunc;
}