【发布时间】:2014-02-20 14:52:46
【问题描述】:
我正在尝试在每次保存一些文件时运行我的测试。这是 gulp 手表:
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 文件,更改会触发测试。如果我再次对其进行修改,则会触发测试,但修改不会生效。例如,如果我第二次添加一个 console.log('foo') ,我将不会看到它,直到我重新启动 gulp watch 并再次保存它。因此,与 gulp.watch 一起使用时,只需运行一次 jasmine 即可。
我猜这是因为 nodejs 在 gulp 进程中缓存了 require 。那我该怎么办呢?
【问题讨论】:
-
你修改的是app文件夹下的哪个文件。
-
地图文件(我已经编辑了问题)
-
尝试重写你的手表任务:
gulp.watch(['app/**/*.js', '!**/embed/**'], ['jasmine']); -
我认为 jasmine 的约定是“-spec”,尽管您的“Spec”格式可能没有区别。
-
对不起,问题不是关于如何触发测试,而是为什么对应用程序的修改不生效,一旦运行测试似乎不可能让它们生效。
标签: node.js gulp jasmine-node