2014-09-19 48 views
1

我遇到了this error with gulp.watch。從本質上講,當一個測試單元發生錯誤而失敗時,watch命令會掛起 - 只運行一次,然後觀察不會再次觸發事件。使用gulp.watch with browserified karma/jasmine單元測試失敗,出錯

規定的解決方法是使用gulp-plumber來防止出錯。但是,這隻適用於流。如果我有browserify運行業力測試在一起,我的配置類似於這樣(我不能確定如何掛鉤流進這個壞小子,使管道工):

gulp.task('watch', function() { 
    gulp.watch('src/**/*.js', ['test']); 
    gulp.watch('test/**/*.spec.js', ['test']); 
}); 

gulp.task('test', function() { 
    return karma.server.start({ 
    files: [ 
     'test/**/*.spec.js' 
    ], 
    frameworks: ['browserify', 'jasmine'], 
    preprocessors: { 
     'test/**/*.spec.js': ['coverage', 'browserify'] 
    }, 
    browsers: ['PhantomJS'], 
    reporters: ['coverage', 'spec', 'failed'], 
    browserify: { 
     debug: true, 
     transform: ['browserify-istanbul'] 
    }, 
    singleRun: true 
    }); 
}); 

有沒有人有一種變通方法運行測試單位的手錶或建議如何才能使這與gulp管道工一起工作?

回答

7

這裏的解決方案是從圖片中刪除gulp.watch。由於browserify被用作預處理器,因此Karma的內部監控功能很神奇,不需要watchify或gulp.watch。

gulp.task('watch', function() { 
    return karma.server.start({ 
    configFile: __dirname + '/karma.conf.js' 
    }); 
}); 

gulp.task('test', function() { 
    return karma.server.start({ 
    configFile: __dirname+'/karma.conf.js', 
    singleRun: true 
    }); 
}); 

而且我調整配置文件:

module.exports = function(config) { 
    config.set({ 
    files: [ 
     'test/**/*.spec.js' 
    ], 
    frameworks: ['browserify', 'jasmine'], 
    preprocessors: { 
     'test/**/*.spec.js': ['coverage', 'browserify'] 
    }, 
    browsers: ['PhantomJS'], 
    reporters: ['coverage', 'spec', 'failed'], 
    browserify: { 
     debug: true, 
     transform: ['browserify-istanbul'] 
    } 
    }); 
};