Javascript 如何在mocha测试中获取sails应用程序的运行时url
我知道sails.getBaseUrlJavascript 如何在mocha测试中获取sails应用程序的运行时url,javascript,node.js,socket.io,sails.js,mocha.js,Javascript,Node.js,Socket.io,Sails.js,Mocha.js,我知道sails.getBaseUrl和它的存在。在bootstrap.test.js中执行sails lift时,我指定了一个端口:1337sails.getBaseUrl()返回http://localhost:1337。然后,我使用mocha运行测试(如果有必要,可以从WebStorm内部运行)。同时,我可以在航站楼进行sails提升,并在http://localhost:1337。两者似乎都运行良好,没有端口冲突 那么,在运行测试时,mocha在什么位置运行sails应用程序?如果您没有
和它的存在。在bootstrap.test.js中执行sails lift
时,我指定了一个端口:1337
sails.getBaseUrl()
返回http://localhost:1337
。然后,我使用mocha运行测试(如果有必要,可以从WebStorm内部运行)。同时,我可以在航站楼进行sails提升
,并在http://localhost:1337
。两者似乎都运行良好,没有端口冲突
那么,在运行测试时,mocha在什么位置运行sails应用程序?如果您没有将其设置为其他位置,则您的sails应用程序将在端口1337上启动。我会检查您是否没有在某个位置设置一个端口
环境变量,一个或另一个应用程序正在使用该变量覆盖默认值。除非其中一个应用程序在Docker这样的虚拟机上运行,否则它们不可能同时在端口1337上运行而不发生冲突,因此您的测试可能会自动失败,或者它们正在运行另一个端口
在Sails v0.12.x和Sails v1.0中,HTTP服务器作为Sails.hooks.HTTP.server
提供,因此您应该能够使用Sails.hooks.HTTP.server.address().port
检查应用程序正在侦听的端口。问题是,我们的测试是执行Sails加载
,而不是Sails提升
。根据和文档,我发现端口绑定不是在sails load
中完成的。因此,我只是添加了额外的代码来绑定/解除绑定端口,作为测试生命周期的一部分
before(function (done) {
server = sails.hooks.http.server.listen(sails.config.port, function (err) {
if (err) {
return done(err);
}
return done();
});
});
after(function (done) {
server.close();
done();
});
为什么在测试中要这样做而不是只做.lift()
?