使用Gulp运行业力测试时出现“模块未定义”错误

时间:2014-12-08 19:15:03

标签: angularjs gulp karma-runner

我的团队正在努力从Grunt搬到Gulp。我有一个很好的Grunt测试任务,但是当我尝试运行测试时(使用gulp-karma)我收到一条错误,上面写着“ReferenceError:找不到变量:module”

我用Google搜索并发现很多帖子都说检查我的angular-mocks.js文件的位置,并且它位于正确的空间(我的Grunt任务对于相同的代码 工作)。

要验证我的代码中没有奇怪的东西,请启动一个新的角度应用程序,并能够复制错误。

我的猜测是我缺少配置值或步骤或其他东西。有什么建议吗?

感谢。

2 个答案:

答案 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)