2012-11-23 36 views
0

時,發誓單元測試被執行多次我的應用程序服務器使用node.js集羣API cluster.fork()來分叉多個子進程。這工作正常。但是,當我嘗試使用單元測試的誓言時,由於在我的應用服務器中調用了cluster.fork(),測試也得到了多次運行;爲我實例化我的測試代碼中的服務器,如下所示:當包含的應用程序服務器使用nodejs cluster.fork

基本-test.js

var vows = require('vows'); 
var MyAppServer = require('../my_app'); 

// start the server 
var app = MyAppServer.start();  

var suite = vows.describe('My Tests'); 
suite.discuss('connections API') 
    .addBatch({ ... }) 
    .export(module); 

我如何防止測試代碼,在這種情況下多次運行?這個測試包含在npm測試中,所以我需要一種方法來在測試本身內部實例化我的應用服務器。

回答

1

在頂部,你可以做

var cluster = require('cluster'); 

然後包裹套件在if

if (cluster.isMaster) { 
    var suite = ... 
    ... 
} 

有關isMaster更多信息,請the documentation

+0

謝謝,這是我做了什麼發佈問題後。然而,這有兩個問題,首先,工作人員不會發出'找不到任何測試來運行',因爲它已經啓動,但沒有任何可測試的東西。我試圖在那裏虛擬測試,沒有工作。第二個問題是,我的服務器正在內部工作。在主服務器中分叉的服務器未準備就緒時,主服務器上運行的誓言將立即開始,因此所有測試均失敗。 – haijin

相關問題