2017-04-04 22 views
0

我知道sails.getBaseUrl以及它是deprecated這一事實。在bootstrap.test.jssails lift,我指定port: 1337sails.getBaseUrl()返回http://localhost:1337。然後我使用摩卡進行測試(如果這很重要,請從WebStorm內部進行測試)。同時,我可以在終端上執行sails lift並在http://localhost:1337上運行相同的應用程序。如果沒有港口衝突,兩者似乎運行良好。如何在摩卡測試中獲取sails應用的運行時url

那麼在運行測試時,摩卡在哪個位置運行sails應用?

回答

0

問題是我們的測試做的是sails load而不是sails lift。基於sails liftload文檔和source code我發現端口綁定不在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(); 
    }); 
+0

爲什麼你會這樣做,而不是在你的測試中做'.lift()'? – sgress454

1

如果你沒有設置其他東西,那麼你的Sails應用程序開始端口1337.我會檢查你沒有一個PORT環境變量設置某個地方,或其他應用程序正在使用覆蓋默認值。除非其中一個應用程序在像Docker這樣的虛擬機中運行,否則它們都不可能在沒有衝突的情況下在端口1337上運行,所以無論您的測試是靜默失敗還是運行不同的端口。

在Sails v0.12.x和Sails v1.0中,HTTP服務器可用爲sails.hooks.http.server,所以您應該能夠使用sails.hooks.http.server.address().port來檢查應用正在監聽的端口。