是否有可能让Mocha等待Promise解决,这会设置Express应用程序?

时间:2017-04-14 03:21:58

标签: javascript express promise mocha

我正在使用较旧的Express应用程序并将其升级为使用远程机密存储服务。在app入口点我有类似的东西:

getSecrets.then(secrets => {
    ...
    const app = express();
    // configure app...
    // start server...
});

以前这是一个同步操作,后来在必需的Mocha模块中需要module.exports = app

现在,当测试运行时,这当然不起作用。我试图导出Promise并尝试进行一些测试等待它,但没有太多运气。

有人对此有任何建议吗?我真的没有找到这样的东西。

根本问题是测试需要设置应用程序,以便require可以对路由执行HTTP请求。

如果我返回app,有没有办法让Mocha等待Promise解决?

此应用使用了Gulp。

var $ = require('gulp-load-plugins')();
var _ = require('lodash');
var gulp = require('gulp-help')(require('gulp'));

var config = require('../config.js').mocha;

// TODO: gulp-order is required to deal with some of the order-dependent
// tests

gulp.task(
  'mocha',
  'Runs mocha with NODE_ENV = env.NODE_ENV || \'test\'',
  function() {
    var mochaOptions = _.extend({}, config.options, {
      NODE_ENV: process.env.NODE_ENV || 'test',
    });

    return gulp.src(config.src)
      .pipe($.order(config.src))
      .pipe($.cached('mocha'))
      .pipe($.spawnMocha(mochaOptions));
  }
);

应用程序在配置文件中设置为全局。

1 个答案:

答案 0 :(得分:0)

简单回答:为Mocha设置一个单独的应用程序,使用相同的路由/配置默认值进行测试。