咕嘟,摩卡,手表不重新加载我的源文件

我正试图让gulp工作来帮助自动化一些unit testing。 我有以下gulp文件。

var gulp = require('gulp'), mocha = require('gulp-mocha'); gulp.task('unit', function() { return gulp.src('test/unit/**/*.js') .pipe(mocha({ reporter: 'spec' })) .on('error', handleError); }); gulp.task('watch', function() { gulp.watch(['src/**/*.js', 'test/unit/**/*.js'], ['unit']); }); gulp.task('test', ['unit', 'watch']); 

当我运行“吞吐单位”时,testing运行良好。

当我运行“吞噬testing”时,testing运行,看起来“看”正在工作。 如果我对其中一个testing文件进行了更改,则考虑到我在testing文件中所做的更改,testing会正确地重新运行。

如果我对源文件进行了更改,那么testing也会重新运行,但不会针对源文件的更新版本运行。

我的想法是,不知何故,源文件被caching,但我找不到任何似乎有这个问题或find解决scheme的其他人。

感谢帮助这个Gulp / Node / Mocha的新手!

我有同样的问题,但我find了一个修复,

问题是,在通过监视运行testing时,nodejs中的要求是cachingsrc文件

我在testing文件中使用了以下函数来取代src文件的caching,取代了require。

显然这样做可能是危险的,请参阅我的post底部的链接了解更多信息。 仅供开发使用;)

Coffeescript – module-test.coffee

 nocache = (module) -> delete require.cache[require.resolve(module)] return require(module) Module = nocache("../module") describe "Module Test Suite", () -> newModule = new Module(); ... 

Javascript – module-test.js

 var Module, nocache; nocache = function(module) { delete require.cache[require.resolve(module)]; return require(module); }; Module = nocache("../src/module"); describe("Module Test Suite", function () { newModule = new Module(); ... 

在这里看到更多的信息: node.js require()caching – 可能无效?

我不想修改我所有的testing,所以在我开始将testing文件传输到mocha之前,

 function freshFiles(chunk, enc, cb){ _.forOwn(require.cache, function(value, key){ if (key.indexOf('lib') !== -1 && key.indexOf('node_modules')===-1){ delete require.cache[key]; } }); } 

这针对我的lib文件夹,但没有在node_modulespath。

在一口吞下它看起来像:

 gulp.task('test', function () { var mocha = require("gulp-mocha"); freshFiles(); gulp.src(testSources) .pipe(mocha({ reporter: 'spec', growl: 'true' })) .on('error', gutil.log); });