現在、proxquire を使用してモジュールを分離してテストし、このモジュールの要件を上書きしています。
require のパスを上書きすると、proxyquire で問題なく動作します。例えば:
var bar = require('./bar');
しかし、proxyquire を使用して、モジュールでテストする必要があるモジュールの特定の機能だけを上書きすることはできますか? 次のようなものです:
var bar = require('./foo').bar();
アーキテクチャの別のレイヤーで発生する http 要求をモックするために使用しているため、これには proxyquire にとどまる必要があります。しかし、テストの場合、モジュールの「今」の時間もモックする必要があります。
だから現在私はこれを持っています:
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
これは間違ったパスであるため、proxyquire のObviousleyは機能しません。'./checkin'.setNow() : setNowStub
ただし、オブジェクト定義の構文が間違っているため、使用も機能しません。
助言がありますか?
前もって感謝します!