在浏览器中查看业力测试输出?


74

我是Karma的新手,但我想知道如何在浏览器中查看其输出(就像存在Runner.html文件时,它与Jasmine进行交互的方式一样)。

我观看了介绍性的截屏视频,并且了解了如何在控制台窗口中查看测试输出,但是在我的浏览器中,除了Karma之外,我几乎没有任何内容

因果关系-已连接

请指教!我想避免维护一个单独的Runner.html文件,因为Karma配置文件已经要求我包括所有必要的脚本链接。


1
在我的Linux机器上,Karma还打开Chromium并说已连接,但随后立即关闭浏览器。是的,在Karma配置中singleRun为false。
Stephane 2015年

我在@StephaneEybert遇到了同样的问题,您解决了吗?
ChrisFletcher 2015年

@ChrisFletcher我在test / karma.conf.js文件中从Chrome更改为PhantomJS,具有以下内容:浏览器:['PhantomJS'//'Chrome'],
Stephane 2015年

Answers:


28

AFAIK,前两个答案是正确的,因为您希望在浏览器中运行测试。单击调试,然后在控制台中查看输出。

礼貌地与先前的答案相矛盾,我会定期执行此操作,并使用Karma使用完整的变量交互进行逐步调试。

对于您的问题的正确答案是“否”,因为您想要的是基于HTML的漂亮输出。但是,此业力插件可以为您提供所需的结果。

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


谢谢,我应该提到您需要打开控制台以查看所有内容,而不仅仅是调试测试。我应该去找那个记者。
克里斯·尼古拉

10

您需要使用singleRun = falsein 运行它,karma.conf.js然后单击右上角显示“调试”的按钮。然后,您应该看到输出,它不会消失或关闭。您还可以使用控制台进行调试。

值得注意的是,调试e2e测试不是那么容易,因为它们基于“未来”,因此您将无法截取值(afaik)。


@Chris,这对我不起作用,我知道这是个老答案,但是您对为什么会这样有什么建议?
ChrisFletcher

抱歉,已经有一段时间了,我最近没有经常使用Karma。可能已经发生了很多变化。
克里斯·尼古拉

5

嗨,在我的情况下,我通过安装karma-jasmine-html-reporter并将其放入报告器数组解决了此问题。

  • 安装 npm i -D karma-jasmine-html-reporter
  • 在您的记者中添加“ kjhtml”。
  • client:{clearContext:false}

var gulpConfig = require('./build/build.conf')();
module.exports = function (config) {
    config.set({
        browsers: ['Chrome'],
        basePath: './',
        plugins: [
          // all other plugins
          'karma-jasmine-html-reporter'
        ],
        colors: true,
        client: {
            clearContext: false    // will show the results in browser once all the testcases are loaded
        },
        frameworks: ['jasmine', 'jasmine-sinon', 'sinon'],
        files: [].concat(
            gulpConfig.deps.lib,
            'js/**/*mother*.js',
            'js/**/*mother.*.js',
            'js/**/*.tests.js'
        ),
        logLevel: config.LOG_INFO,
        reporters: ['kjhtml', 'progress', 'coverage'],
    });
};



2

我想与Karma一起显示HTML5 Web通知,所以我写了一些很快的东西使其可以与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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.