5

ファイルを保存するたびにテストを実行しようとしています。ガルプウォッチは次のとおりです。

gulp.task('jasmine', function() {
 gulp.src('spec/nodejs/*Spec.js')
  .pipe(jasmine({verbose:true, includeStackTrace: true}));
});
gulp.task('watch', function () {
  gulp.watch(['app/*.js', 'app/!(embed)**/*.js','spec/nodejs/*.js'], ['jasmine']);
});

たとえば app/maps.js をテストするために、次のような spec/nodejs/mapsSpec.js ファイルを作成しています。

'use strict';
var maps = require('../../app/maps');
describe('/maps related routes', function(){
  it('should ...', function(){...}
...

仕様ファイルを変更すると、すべてが正常に機能します。app/maps.js ファイルを変更すると、変更によってテストがトリガーされます。もう一度変更すると、テストがトリガーされますが、変更は有効になりません。たとえば、2 回目に console.log('foo') を追加すると、gulp ウォッチを再起動して再度保存するまで表示されません。したがって、ジャスミンを gulp.watch で使用する場合は、1 回の実行のみで問題ありません。

gulpプロセスでrequireがnodejsにキャッシュされているためだと思います。では、どうすればいいですか?

4

2 に答える 2

1

この問題の修正はまだ見つかっていませんが、gulp-shell タスクを使用して回避できます。

npm install gulp-shell --save-dev

それから

var shell = require('gulp-shell');
...
gulp.task('jasmine', function() {
 gulp.src('spec/nodejs/*Spec.js')
  .pipe(shell('minijasminenode spec/*Spec.js'));
});

また、jasmine を直接の依存関係としてインストールする必要があります (gulp-jasmine は minijasminenode を使用します)。

于 2014-05-03T21:57:35.127 に答える