nodeJS proxyquire覆盖require的特定功能

时间:2015-03-12 15:42:50

标签: node.js unit-testing mocking proxyquire

我目前正在使用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也不起作用。

有什么建议吗?

提前致谢!

0 个答案:

没有答案