Javascript 使用Karma将测试输出到浏览器

Javascript 使用Karma将测试输出到浏览器,javascript,testing,karma-runner,Javascript,Testing,Karma Runner,我正在使用Karma测试我的项目,并且可以在控制台窗口中看到通过失败的测试,但是,如何让这些测试显示在浏览器中?浏览器只有一个绿色条(即使测试失败),带有 Karma v0.10.2-已连接 上面写着 我已经尝试将singleRun:false添加到karma.config.js文件中 配置文件如下所示: module.exports = function (config) { config.set({ basePath: '../', files: [

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

Karma v0.10.2-已连接

上面写着

我已经尝试将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'
        }

    })
}
根据,即使不是很完美:


如果“singleRun”为false,它将打开ci模式,因此,将其设置为true,您将在浏览器的顶部栏上看到一些失败的红色状态。

使用Karma没有直接的方法。 解决这个问题的“最佳”方法是蹲下来为karma编写一个html报告程序(这会让我们很多其他karma用户非常高兴)

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

编写了一个声称可以生成HTML测试输出的插件

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

plugins: [
'karma-htmlfile-reporter'
]
我想用Karma来展示,所以我很快写了一些东西,让它与Karma版本0.11一起使用。可能与其他版本的行为略有不同。我将此脚本与我的其他应用程序脚本一起加载,它将存储karma测试结果,完成后,它将确定测试是否成功,然后重置为原始karma函数,以便在再次运行此脚本时不会更改它们

// 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;
}

似乎有一个插件属性覆盖devdependency的bug。一旦我将所有依赖项添加到插件属性中(“karma-jasmine”和“karma chrome launcher”)我在启动时停止出错,但结果与没有插件的karma一致。我在插件方面也遇到了一些问题-没有框架Jasmine的提供商-一旦我注释掉插件条目,它就起作用了。这只会将结果输出到一个文件,没有进入运行测试的窗口。我最近向npm发布了
karma code reporter
。如果有人测试它,我会非常高兴:)