标题说明了一切。尽管在网上搜索,我还没有找到解决这个问题的唯一例子。
以下是一些近乎未命中的内容
这是我正在进行的代码https://github.com/wheresrhys/on-guard/tree/browserify(注意它是'browserify'分支--Gruntfile.js有点乱,但很快就会整理它)。我使用console.log
进行的初步调查表明,某些方式bundle.src.js
正在页面中加载,但是当测试运行(并传递!)时,bundle.src.js
中的代码没有运行,所以我感觉它可能是一个混淆问题...虽然只限于phantomjs,因为当我打开chrome中的specrunner时代码正在运行。
答案 0 :(得分:0)
我正在使用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']);
生成伊斯坦布尔报道报告的步骤可以归结为三个:
在我们的解决方案中,我们在步骤1中使用browerify-istanbul
,在步骤2和3中使用grunt-contrib-jasmine
和runt-template-jasmine-istanbul
。
browserify-istanbul
将让你在browserify构建步骤中检测代码,这样,我们就可以轻松忽略第三方库。但是grunt-template-jasmine-istanbul
会再次检测代码。为避免这种情况,您可以在选项中将replace
设置为false
。
参考文献: