Gulp: 在 运行 测试之前等待 express 服务器启动

Gulp: Wait for express server to start before running tests

我是节点的新手。我构建了一个示例 Express 应用程序并使用 cucumber.js 为其编写了一些 BDD 测试。我想使用 gulp 自动执行测试,这样当我 运行 我的测试时,它将首先启动 express 应用程序,一旦服务器启动, 运行 通过测试。但是,目前服务器启动前的测试 运行 因此全部失败。有没有办法等待(使用 gulp)服务器启动,然后 运行 测试?

我在这里使用 gulp-cucumber 和 gulp-express(有点被 gulp-load-plugins 隐藏)。

我的gulp文件(部分):

var gulp = require('gulp'),
  plugins = require('gulp-load-plugins')();

gulp.task('server', function () {
  plugins.express.run(['bin/www']);
});

gulp.task('cucumber', ['server'], function() {
  return gulp.src('features/*').pipe(plugins.cucumber({
    'steps': 'features/steps/*.steps.js',
    'support': 'features/support/*.js'
  }));
});

gulp.task('test', ['server', 'cucumber']);

我必须使用这个解决方案 - https://www.npmjs.com/package/run-sequence

var gulp = require('gulp'),
  plugins = require('gulp-load-plugins')(),
  runSequence = require('run-sequence');

gulp.task('server', function () {
  plugins.express.run(['bin/www']);
});

gulp.task('cucumber', function() {
  return gulp.src('features/*').pipe(plugins.cucumber({
    'steps': 'features/steps/*.steps.js',
    'support': 'features/support/*.js'
  }));
});

gulp.task('test',  function(){
     runSequence('server', 'cucumber');
});