服务器:
server.register({
register: require('hapi-mongodb'),
options: config.db.mongo,
}, (err) => {
if (err) throw err;
if (!module.parent) {
server.start((err) => {
if (err) throw err;
console.log(`Server started`);
});
}
});
在我的测试中:
server.inject(options, function(response)...
在调用路由之前,这不会加载插件。它就像它不会等待插件注册时调用next()
。例如,在这个虚拟插件中,我在调用next()
之前创建了一个延迟。但到那时服务器已经处理了路由呼叫。
exports.register = function (plugin, options, next) {
setTimeout(function() {
console.log('Loaded after the route is called');
next();
}, 2000);
答案 0 :(得分:0)
确定。感谢Hapi网站上的一些帮助,我可以通过收听服务器事件来做到这一点:
beforeEach(function(done) {
server.ext('onPreStart', function() {
done();
});
});
我要补充一点,你不能做这种常见的行为:
if (!module.parent) {
server.start((err) => {
而且必须允许测试也启动服务器。因此,请删除module.parent
支票。