3

現在、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ただし、オブジェクト定義の構文が間違っているため、使用も機能しません。

助言がありますか?

前もって感謝します!

4

1 に答える 1