我是Karma的新手,但我想知道如何在浏览器中查看其输出(就像存在Runner.html文件时,它与Jasmine进行交互的方式一样)。
我观看了介绍性的截屏视频,并且了解了如何在控制台窗口中查看测试输出,但是在我的浏览器中,除了Karma之外,我几乎没有任何内容
因果关系-已连接
请指教!我想避免维护一个单独的Runner.html文件,因为Karma配置文件已经要求我包括所有必要的脚本链接。
我是Karma的新手,但我想知道如何在浏览器中查看其输出(就像存在Runner.html文件时,它与Jasmine进行交互的方式一样)。
我观看了介绍性的截屏视频,并且了解了如何在控制台窗口中查看测试输出,但是在我的浏览器中,除了Karma之外,我几乎没有任何内容
因果关系-已连接
请指教!我想避免维护一个单独的Runner.html文件,因为Karma配置文件已经要求我包括所有必要的脚本链接。
Answers:
AFAIK,前两个答案是正确的,因为您希望在浏览器中运行测试。单击调试,然后在控制台中查看输出。
礼貌地与先前的答案相矛盾,我会定期执行此操作,并使用Karma使用完整的变量交互进行逐步调试。
对于您的问题的正确答案是“否”,因为您想要的是基于HTML的漂亮输出。但是,此业力插件可以为您提供所需的结果。
您需要使用singleRun = false
in 运行它,karma.conf.js
然后单击右上角显示“调试”的按钮。然后,您应该看到输出,它不会消失或关闭。您还可以使用控制台进行调试。
值得注意的是,调试e2e测试不是那么容易,因为它们基于“未来”,因此您将无法截取值(afaik)。
嗨,在我的情况下,我通过安装karma-jasmine-html-reporter
并将其放入报告器数组解决了此问题。
npm i -D karma-jasmine-html-reporter
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'],
});
};
一种选择是在浏览器中打开Javascript控制台。业力为每个测试创建一个日志条目,包括结果。
我想与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;
}