Gulp 运行 业力测试 - 找不到变量:angular

Gulp run karma tests - can't find variable: angular

当运行宁gulp时,测试运行就好了。在文件更改时,会抛出错误,但随后 运行 并通过测试。如果我用测试 运行ning 启动浏览器,它就会出错。我注意到文件没有按照我指定的方式提供。我当前的目录看起来像这样 应用程序 bower_components node_modules public javascripts 测试 karma.conf.js

gulpfile.js

var gulp = require('gulp');
var karma = require('gulp-karma');
var shell = require('gulp-shell');

var testFiles = [

];

var serverDir = [
    './views/*.js',
    './test/**/*.js',
    './test/*.js',
    './routes/**/*.js',
    './routes/*.js',
    './models/**/*.js',
    './models/*.js',
    'app.js'
];

gulp.task('test', function() {
    // Be sure to return the stream
    return gulp.src(testFiles)
        .pipe(karma({
            configFile: 'public/javascripts/karma.conf.js',
            action: 'watch'
        }))
        .on('error', function(err) {
            // Make sure failed tests cause gulp to exit non-zero
            //throw err;
        });
});

gulp.task('default', ['test', 'testServer', 'watchServerFiles']);

gulp.task('watchServerFiles', function() {
    gulp.watch(serverDir, ['testServer']);
});
gulp.task('testServer', shell.task('jasmine-node-karma test/api.spec.js'));

karma.conf.js

    module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine'],
    files: [
        '../../bower_components/angular/angular.js',
        '../../bower_components/angular-mocks/angular-mocks.js',
        '../../bower_components/angular-resource/angular-resource.js',
        '../../bower_components/angular-route/angular-route.js',
        '../../bower_components/lodash/lodash.js',
        './app.js',
        './controllers/*.js',
        './directives/*.js',
        './services/*.js',
        './*.js',
        './test/*.js',
        './test/**/*.js'
    ],
    reporters: ['progress'],
    browsers: ['PhantomJS'],
    plugins: [
      'karma-jasmine',
      'karma-phantomjs-launcher'
    ],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    singleRun: false
  });
};

勾选这个thread

投票最多的两个答案都很好,但我决定将 gulp-karma 替换为 karma 本身。优点是您不需要在 gulpfile.js 和 karma.conf.js 文件中复制文件列表。

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);
});