我的团队正在努力从Grunt搬到Gulp。我有一个很好的Grunt测试任务,但是当我尝试运行测试时(使用gulp-karma)我收到一条错误,上面写着“ReferenceError:找不到变量:module”
我用Google搜索并发现很多帖子都说检查我的angular-mocks.js文件的位置,并且它位于正确的空间(我的Grunt任务对于相同的代码 工作)。
要验证我的代码中没有奇怪的东西,请启动一个新的角度应用程序,并能够复制错误。
我的猜测是我缺少配置值或步骤或其他东西。有什么建议吗?
感谢。
答案 0 :(得分:6)
@ mcranston18的回答绝对有效。但作为替代选项,gulp-karma
目前是一个不必要的插件。 gulp
的部分优势在于您不必在阳光下使用插件。相反,您可以直接连接到karma
。
var gulp = require('gulp');
var karma = require('karma').server;
gulp.task('tests', function(done) {
return karma.start({
configFile: __dirname + '/test/karma.conf.js',
singleRun: true
}, done);
});
答案 1 :(得分:5)
当您运行gulp tests
时,gulp-karma正在查找gulpfile.js
内的文件,而不是您定义的karma.conf.js
内的文件。请记住,当您返回gulp.src(tests)
时,您将传递测试通过所需的文件数组。
要解决您的问题,请在gulpfile.js
中更新您的tests
数组,以包含您的凉亭文件,应用文件和测试文件:
var tests = [
'bower_components/angular/angular.js',
'bower_components/angular-mocks/angular-mocks.js',
'bower_components/angular-animate/angular-animate.js',
'bower_components/angular-cookies/angular-cookies.js',
'bower_components/angular-resource/angular-resource.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-sanitize/angular-sanitize.js',
'bower_components/angular-touch/angular-touch.js',
'app/scripts/app.js',
'app/scripts/**/*.js',
'test/mock/**/*.js',
'test/spec/**/*.js'
];
您可以删除files
中的karma.conf.js
数组,因为它们不需要。
(p.s。我也引用了app.js,因为app/scripts/**/*.js
不会匹配需要首先加载的app.js)