首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gulp-watch和gulp-server server重新加载cucumber.js步骤

使用gulp-watch和gulp-server server重新加载cucumber.js步骤
EN

Stack Overflow用户
提问于 2015-04-29 07:24:27
回答 1查看 800关注 0票数 1

我尝试使用以下gulpfile.js来监视更改、重新启动服务器和重新运行我的测试(cucumber.js)。更改黄瓜规格或我的应用程序中的文件都会成功触发该过程。但是,规格的更新内容将被忽略!就像规范被缓存了一样。如何确保执行最新的规范?

文件内容:

代码语言:javascript
复制
"use strict";
var gulp = require( "gulp" );
var cucumber = require( "gulp-cucumber" );
var watch = require( "gulp-watch" );
var server = require( 'gulp-develop-server' );

gulp.task( "cukes", function( done ) {

    return gulp.src( "specs/**/*.feature" ).pipe( cucumber( {

        "steps" : "specs/steps/**/*.js,support/*_hooks.js",
        "format" : "pretty"

    } ) );

} );


gulp.task( "test", [ "server:start", "cukes" ] );

gulp.task( "server:start", function() {

    server.listen( { path: "./index.js" } );

} );

gulp.task( "watch", [ "server:start" ], function() {

    watch( [ "lib/**/*", "specs/**/*" ], function() {

        server.restart( function() {

            setTimeout( function() { gulp.start( "cukes" ); }, 500 );

        } );

    } );

} );
EN

回答 1

Stack Overflow用户

发布于 2015-05-24 06:16:42

节点模块被缓存在require.cache中,因此您需要重置缓存以不包含cucumber所需的内容。您可以在调用watch()之前保存Object.keys(require.cache),然后在启动"cukes“任务之前从require.cache中删除任何新的密钥。像这样的东西可能会起作用:

gulp.task( "watch", [ "server:start" ], function() { var originalKeys = Object.keys(require.cache); watch( [ "lib/**/*", "specs/**/*" ], function() { server.restart( function() { var newKeys = Object.keys(require.cache); while (newKeys.length > originalKeys.length) { delete require.cache[newKeys.pop()]; } setTimeout( function() { gulp.start( "cukes" ); }, 500 ); } ); } ); } );

(通过pull请求将类似这样的内容添加到gulp-cucumber中可能也是一个好主意。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29931664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档