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