我目前正在使用proxquire来隔离测试模块,以覆盖此模块的需求。
使用proxyquire覆盖require的路径可以正常工作。例如:
var bar = require('./bar');
但是你也可以使用proxyquire来覆盖模块中需要测试的模块的特定功能吗?如下所示:
var bar = require('./foo').bar();
我需要留下代理请求,因为我正在使用它来模拟在架构的另一层中发生的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();
代理查询中的明显'./checkin.setNow' : setNowStub
不起作用,因为这是错误的道路。但由于对象定义中的语法错误,使用'./checkin'.setNow() : setNowStub
也不起作用。
有什么建议吗?
提前致谢!