1

运行 gulp 时,测试运行良好。在文件更改时,错误会被抛出,但随后会运行并通过测试。如果我在运行测试的情况下启动浏览器,它只会出错。我注意到文件没有按照我指定的方式提供。我当前的目录看起来像这样 app bower_components node_modules public javascripts tests 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'));

业力.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
  });
};
4

1 回答 1

3

检查这个线程

两个投票最多的答案都很好,但我决定用 karma 本身代替 gulp-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);
});
于 2015-06-01T18:54:44.100 回答