74

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

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

业力 - 连接

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

4

5 回答 5

27

AFAIK,前两个答案是正确的,因为您需要在浏览器中运行测试;单击 DEBUG 并在控制台中查看输出。

礼貌地反驳之前的答案,我经常这样做,并使用 Karma 进行全变量交互的逐步调试。

您的问题的正确答案是“否”,因为您想要的是基于 HTML 的漂亮输出。然而,这个因果报应插件可能会给你你想要的结果。

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

于 2013-12-17T03:11:29.913 回答
10

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

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

于 2013-05-27T02:28:31.487 回答
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'],
    });
};

于 2018-07-27T19:34:19.820 回答
2

一种选择是在浏览器中打开 Javascript 控制台。Karma 为每个测试创建一个日志条目,包括结果。

于 2013-05-14T23:04:03.553 回答
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;
}
于 2015-01-20T14:52:54.150 回答