如何在mocha测试中获取sails app的运行时url

时间:2017-04-04 13:51:32

标签: javascript node.js socket.io sails.js mocha

我了解sails.getBaseUrl以及它是deprecated这一事实。在bootstrap.test.js执行sails lift时,我指定port: 1337sails.getBaseUrl()返回http://localhost:1337。然后我使用mocha运行测试(如果重要的话,从WebStorm内部)。与此同时,我可以在终端上执行sails lift并在http://localhost:1337上运行相同的风帆应用。两者似乎都运行正常,没有端口冲突。

那么在运行测试时,mocha在什么位置运行sails app?

2 个答案:

答案 0 :(得分:1)

如果您没有将其设置为其他内容,那么您的Sails应用程序将从端口1337开始。我会检查您是否在某个地方设置了PORT个环境变量用于覆盖默认值。除非其中一个应用程序在像Docker这样的虚拟机中运行,否则它们都不可能在没有冲突的情况下在端口1337上运行,因此要么您的测试无声地失败,要么它们正在运行不同的端口。

在Sails v0.12.x和Sails v1.0中,HTTP服务器可用作sails.hooks.http.server,因此您应该能够使用sails.hooks.http.server.address().port检查应用正在侦听的端口。

答案 1 :(得分:0)

问题是我们的测试是sails lift而不是sails load。根据{{​​3}}和sails lift文档以及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(); }); 中完成。所以我只是添加了额外的代码来绑定/解除端口绑定作为测试生命周期的一部分。

{{1}}