Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在node.js/Javascript中初始化来自同一模块的两个独立对象?_Javascript_Node.js_Module_Require - Fatal编程技术网

如何在node.js/Javascript中初始化来自同一模块的两个独立对象?

如何在node.js/Javascript中初始化来自同一模块的两个独立对象?,javascript,node.js,module,require,Javascript,Node.js,Module,Require,我正在为正在开发的程序编写一些模拟服务器测试用例,遇到了一个我不熟悉的问题 下面是简单的rest服务器 var restify = require('restify'); var server = restify.createServer(); var mock = {}; module.exports = mock; var resp = ''; mock.init = function(name, port,callback) { resp = name; server.u

我正在为正在开发的程序编写一些模拟服务器测试用例,遇到了一个我不熟悉的问题

下面是简单的rest服务器

var restify = require('restify');
var server = restify.createServer();

var mock = {};
module.exports = mock;
var resp = '';
mock.init = function(name, port,callback) {
    resp = name;
    server.use(restify.bodyParser({
        mapParams: false
    }));

    server.get('/ping', function(req, res, next) {
        res.send(resp);
    });
    server.listen(port, function() {
        console.log('%s listening at %s', server.name, server.url);
        callback(undefined,server.url);
    });
};
我尝试使用以下命令初始化两台服务器:

var should = require('should');

var mock1 = '';
var mock2 = '';

describe('mock riak load balancer', function() {
    it('should configure a mock riak node', function(done) {
        mock1 = require('./mock.js');
        mock1.init('mock1', 2222, function(e, r) {
            done();
        });
    });
    it('should configure a second mock riak node', function(done) {
        mock2 = require('./mock.js');
        mock2.init('mock2', 2223, function(e, r) {
            done();
        });
    });
});
不幸的是,当我ping mock1时,连接被拒绝,所以它被第二次调用覆盖。猜测这与Javascript处理范围的方式有关,但我不确定


我求助于此:但我认为必须有更好的方法,这与node.js加载模块的方式有关。node.js缓存流程中所需的模块,这意味着mock2基本上与mock1是同一个对象

更多信息:


很好的链接,我在这里(针对我的模拟代码)介绍了一个用于创建模拟的依赖项注入模块,这是一个真正的模拟