我正在使用cg-angular来支撑我的项目。
我正在测试使用templateUr和ng-html2js的指令将模板加载到模块中。当我使用Chrome作为浏览器运行测试时,它没有任何问题,但是当我使用幻影运行它时,我得到:
Error: [$injector:modulerr] Failed to instantiate module templates due to:
这是我的Gruntfile的相关部分:
karma: {
options: {
frameworks: ['jasmine'],
preprocessors: {'directive/**/*.html':['ng-html2js']},
files: [ //this files data is also updated in the watch handler, if updated change there too
'<%= dom_munger.data.appjs %>',
'bower_components/angular-mocks/angular-mocks.js',
'directive/**/*.html',
createFolderGlobs(['*-spec.js'])
],
ngHtml2JsPreprocessor:{
moduleName:'templates'
},
logLevel: 'ERROR',
reporters: ['mocha'],
autoWatch: false, //watching is handled by grunt-contrib-watch
},
all_tests: {
browsers: ['PhantomJS', 'Chrome'],
singleRun:false
},
during_watch:{
browsers: ['PhantomJS'],
singleRun:true
}
}
所以运行咆哮测试,运行业力:all_tests,就像一个冠军。运行业力的咕噜咕噜:在期间失败。
有没有办法检查html2js是否实际上正在运行?
修改的 这不是幽灵。如果我在'during_watch'任务中运行Chrome,它也会失败。
答案 0 :(得分:1)
想出来。我使用generator-cg-angular来支撑这个项目。它使用grunt watch事件来设置一些选项。此事件仅在服务任务期间使用,而不是在测试或构建期间使用。我没有注意到它覆盖了karma.options所以html2js从未被调用过。当我将其附加到我的Gruntfile的事件部分时,html2js应该运行。下面是我的Gruntfile的相关部分,显示了这些变化。
if (grunt.file.exists(spec)) {
var files = [].concat(grunt.config('dom_munger.data.appjs'));
files.push('bower_components/angular-mocks/angular-mocks.js');
files.push(spec);
files.push('directive/**/*.html'); // This one
grunt.config('karma.options.files', files);
grunt.config('karma.options.ngHtml2JsPreprocessor.moduleName', 'templates'); // And this one
tasksToRun.push('karma:during_watch');
}