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

我对 Karma 还不熟悉,但是我想知道如何在浏览器中查看它的输出(就像当一个 runner.html 文件出现时,人们与 Jasmine 交互的方式一样)。

我观看了介绍性的视频,我知道如何在控制台窗口中查看测试输出,但在我的浏览器中,我几乎没有得到任何关于 Karma 的内容,除了

因果报应

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

37265 次浏览

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

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

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

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

与前一个答案相矛盾的是,我经常使用 Karma 进行全变量交互的逐步调试。

对于您的问题,正确的答案是“不”,因为您想要的是基于 HTML 的输出然而,这个业力插件可能会给你想要的结果。

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

我想显示 HTML5网络通知与卡玛,所以我写了一些快速得到它与卡玛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;
}

嗨,在我的例子中,我通过安装 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'],
});
};