Loopback和mocha:等待服务器完成启动脚本

San*_*rea 6 javascript node.js strongloop loopbackjs

嗨,作为问题的标题,我想知道如何在启动测试之前检查环回启动脚本是否已完成.在示例项目中:

https://github.com/strongloop/loopback-example-relations

测试文件夹中有一个文件似乎可以完成这项工作,但遗憾的是它没有解决它.

start-server.js:

var app = require('../server/server');

module.exports = function(done) {
  if (app.loaded) {
    app.once('started', done);
    app.start();
  } else {
    app.once('loaded', function() {
      app.once('started', done);
      app.start();
    });
  }
};
Run Code Online (Sandbox Code Playgroud)

此脚本在其余测试API中加载,如下所示:

before(function(done) {
    require('./start-server');
    done();
});
Run Code Online (Sandbox Code Playgroud)

但是从不调用该函数.这是使用该脚本的正确方法吗?

我结束了以下实现:

before(function (done) {
    if (app.booting) {
        console.log('Waiting for app boot...');
        app.on('booted', done);
    } else {
        done();
    }
});
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我对这个启动服务器脚本感到困惑.

按照@stalin建议编辑我修改了before函数如下:

before(function(done) {
    require('./start-server')(done);
});
Run Code Online (Sandbox Code Playgroud)

并且执行进入else分支但从done未被调用.

sta*_*lin 4

您永远不会将完成的函数传递给start-server脚本。尝试这样做:

before(function(done) {
    var server = require('./start-server');
    server(done);
});
Run Code Online (Sandbox Code Playgroud)