标题说明了一切。尽管拖延了互联网,但我还没有找到解决此问题的单个示例。
这是一些差点错过
这是我正在进行的代码https://github.com/wheresrhys/on-guard/tree/browserify(请注意,它是“browserify”分支-Gruntfile.js有点困惑,但很快就会整理一下)。我最初使用
console.log
进行的调查表明,页面中已以某种方式加载了bundle.src.js
,但是当测试运行(并通过!)时,就没有运行bundle.src.js
中的代码,因此我感到这可能是一个别名问题...尽管仅限于phantomjs,因为当我在chrome中打开specrunner时,代码正在运行。 最佳答案
我正在使用grunt-browserify
+ browserify-istanbul
+ grunt-contrib-jasmine
+ grunt-template-jasmine-istanbul
作为解决方案。当使用browserify
构建源文件时,此解决方案还排除了第三方库。
首先显示代码,稍后再解释,
grunt.initConfig({
browserify: {
// build specs using browserify
specs: {
src: ["spec/**/*Spec.js"],
dest: "spec/build/specs.js",
options: {
debug: true
}
},
// build source files using browserify and browserify-istanbul
dev: {
options: {
debug: true,
browserifyOptions: {
standalone: 'abc'
},
transform: [['browserify-istanbul', {
ignore: ['**/node_modules/**'], // ignore third party libs
defaultIgnore: true
}]]
},
src: ['abc.js'],
dest: 'dist/abc.js'
}
},
connect: {
server: {
options: {
port: 7000
}
}
},
// test using jasmine, generate coverage report using istanbul
jasmine: {
coverage: {
src: ['dist/abc.js'],
options: {
junit: {
path: 'bin/junit'
},
host: 'http://localhost:7000/',
specs: 'spec/build/specs.js',
keepRunner: true,
summary: true,
template: require('grunt-template-jasmine-istanbul'),
templateOptions: {
replace: false, // *** this option is very important
coverage: 'bin/coverage/coverage.json',
report: [
{
type: 'html',
options: {
dir: 'spec/coverage/html'
}
}]
}
}
}
}
grunt.registerTask('specs', ['browserify:specs', 'browserify:dev', 'connect', 'jasmine']);
生成 Istanbul 尔覆盖率报告的步骤可以归纳为三个步骤:
在我们的解决方案中,我们在步骤1中使用
browerify-istanbul
,在步骤2和3中使用grunt-contrib-jasmine
和runt-template-jasmine-istanbul
。browserify-istanbul
将让您在browserify构建步骤中检测代码,通过这种方式,我们可以轻松地忽略第三方库。但是grunt-template-jasmine-istanbul
将再次检测代码。为避免这种情况,您可以在选项中将replace
设置为false
。引用:
replace
选项关于node.js - 生成 Istanbul 尔代码覆盖率报告以在phantomjs中的浏览器打包上运行 Jasmine 测试(通过grunt),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20647019/