Javascript 使用Karma将测试输出到浏览器
我正在使用Karma测试我的项目,并且可以在控制台窗口中看到通过失败的测试,但是,如何让这些测试显示在浏览器中?浏览器只有一个绿色条(即使测试失败),带有 Karma v0.10.2-已连接 上面写着 我已经尝试将singleRun:false添加到karma.config.js文件中 配置文件如下所示: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: [
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
。如果有人测试它,我会非常高兴:)