Hapi测试没有正确加载插件

时间:2015-11-26 18:51:19

标签: hapijs

服务器:

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);

1 个答案:

答案 0 :(得分:0)

确定。感谢Hapi网站上的一些帮助,我可以通过收听服务器事件来做到这一点:

beforeEach(function(done) {
  server.ext('onPreStart', function() {
    done();
  });
});

我要补充一点,你不能做这种常见的行为:

if (!module.parent) {
 server.start((err) => {

而且必须允许测试也启动服务器。因此,请删除module.parent支票。