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

Jam*_*der 4 angularjs karma-runner gulp

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

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

为了验证在我的代码中它不是一个奇怪的东西,旋转一个新的角度应用程序,并能够复制错误.

我的猜测是我错过了配置值或步骤或其他东西.有什么建议?

谢谢.

Jay*_*ris 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);
});
Run Code Online (Sandbox Code Playgroud)


mcr*_*n18 5

当你在跑步时gulp tests,gulp-karma正在寻找文件gulpfile.js,而不是karma.conf.js你已经定义的文件.请记住,当您返回时gulp.src(tests),您将传递测试通过所需的文件数组.

要解决您的问题,请gulpfile.js更新您的tests阵列,以包含您的bower文件,应用程序文件和测试文件:

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'
];
Run Code Online (Sandbox Code Playgroud)

您可以删除不需要的files数组karma.conf.js.

(ps我也引用了app.js,因为app/scripts/**/*.js没有匹配的app.js需要首先加载)