当包含的应用服务器使用nodejs cluster.fork时,誓言单元测试被多次执行

时间:2012-11-23 06:55:20

标签: node.js vows

我的应用服务器使用node.js群集API cluster.fork()来分叉多个子进程。这很好。

但是,当我尝试使用vows进行单元测试时,由于在app服务器内调用了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测试中,所以我需要一种在测试本身内实例化我的app服务器的方法。

1 个答案:

答案 0 :(得分:1)

在顶部你可以做到

var cluster = require('cluster');

然后将套件包装在if

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

有关isMaster的详情,请查看the documentation