Node.js nodeJS proxyquire覆盖require的特定函数
我目前正在使用proxquire单独测试一个模块,以覆盖此模块的要求 覆盖require的路径对proxyquire很有效。例如:Node.js nodeJS proxyquire覆盖require的特定函数,node.js,unit-testing,mocking,proxyquire,Node.js,Unit Testing,Mocking,Proxyquire,我目前正在使用proxquire单独测试一个模块,以覆盖此模块的要求 覆盖require的路径对proxyquire很有效。例如: var bar = require('./bar'); 但是,您是否可以使用proxyquire仅覆盖要测试的模块中所需的模块的特定功能?比如: var bar = require('./foo').bar(); 我需要留在proxyquire,因为我使用它来模拟在体系结构的另一层中发生的http请求。但是在测试的情况下,我也需要在模块中模拟“现在”的时间 所以
var bar = require('./bar');
但是,您是否可以使用proxyquire仅覆盖要测试的模块中所需的模块的特定功能?比如:
var bar = require('./foo').bar();
我需要留在proxyquire,因为我使用它来模拟在体系结构的另一层中发生的http请求。但是在测试的情况下,我也需要在模块中模拟“现在”的时间
所以现在我有这个,
var uraStub = sendMockRequest(paramListOfCheckin, queryList);
var setNowStub = function(){ return 1425998221000; };
var checkin = proxyquire('../src/logic/logicHandlerModules/checkin', {
'../../persistence/ura' : uraStub,
'./checkin.setNow' : setNowStub
});
checkin.checkin(...)
setNow的实施是:
var setNow = function(){
return new Date().getTime();
};
var checkin = function (...) {
var now = require('./checkin').setNow();
Obviousley”./checkin.setNow:proxyquire中的setnowsub
不起作用,因为这是错误的路径。但是由于对象定义中的语法错误,使用。/checkin.setNow():setnowsub
也不起作用
有什么建议吗
提前谢谢