[英]Add angular controllers to karma-coverage (Istanbul) code coverage preprocessor
这是我的项目的设置方式:
project/
assets/
js/
app.js
services.js
directives.js
controllers/
FooCtrl.js
BarCtrl.js
css/
images/
test/
unit/
controllers/
controllerSpec.js
我正在努力将js/
下的所有文件添加到karma-coverage的preProcessor
指令中。
这样做
preprocessors: {
'**/assets/js/*.js': ['coverage'],
},
仅针对直接在assets/js/
下的文件生成覆盖率报告,而不会针对assets/js/controllers/
下的文件生成覆盖率报告。
指定单个控制器:
preprocessors: {
'**/assets/js/controllers/FooCtrl.js': ['coverage'],
},
只是说“没有数据可显示”。
最后,只需执行通配符:
preprocessors: {
'**/*.js': ['coverage'],
},
显示直接在assets/js/
, test/unit/controllers/
test/lib/
等目录下的所有文件的数据,但仍拒绝显示assets/js/controllers/
任何覆盖率数据。
我发誓StackOverflow有一些神奇之处。 我花了一个小时让它开始工作,放弃了,发布了这个问题,然后2分钟后就解决了。
我犯了将文件从files
数组移动到preprocessors
指令的错误。 要获得某个文件的代码覆盖率,它必须同时存在于files
数组和preprocessors
。
我最后的有效配置如下所示:
files : [
//3rd Party Code
'bower_components/angular/angular.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angularjs-scope.safeapply/src/Scope.SafeApply.js',
//App-specific Code
'assets/js/app.js',
'assets/js/services.js',
'assets/js/directives.js',
'assets/js/resources.js',
'assets/js/controllers/*.js',
//Test-Specific Code
'node_modules/chai/chai.js',
'test/lib/chai-should.js',
'test/lib/chai-expect.js'
],
preprocessors: {
'**/assets/js/*.js': ['coverage'],
'**/assets/js/controllers/*.js': ['coverage']
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.