我正在使用较旧的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));
}
);
应用程序在配置文件中设置为全局。
答案 0 :(得分:0)
简单回答:为Mocha设置一个单独的应用程序,使用相同的路由/配置默认值进行测试。