2016-09-26 7 views
0

sinon.jsを使用してrequirenode jsにスタブする方法はありますか?ノードjでスタブが必要です

例えば、私はいくつかのファイルがあります:

const myModule = require('awesomeModule'); 

をそして私は私のテストでは、このようなスタブを持つようにしたい:

myRequireStub.withArgs('awesomModule').throws(new Error('some error')); 

答えて

0

これは動作します:

const sinon = require('sinon'); 

let myRequireStub = sinon.stub(module, 'require'); 

myRequireStub.withArgs('awesomeModule').throws(new Error('some error')); 

const myModule = require('awesomeModule'); 
// Error: some error 

をしかし、ことにより、 stubbing requireあなたはモジュールを読み込む能力をかなり損なうでしょう。だから、これがどれほど有用であるか分かりません。

0

用途によっては、おそらくmockeryまたはmock-requireのようなライブラリを使用するのが最善です。しかし、私はスタブする方法が必要でした。すべてが必要です。これは私が思いついたものです。

const _module = require('module'); 

let require = sinon.stub(_module, '_load'); 

//return a function that returns a function 
require.returns(() => { return() => {}; }); 

//run code that calls require 

require.restore(); 

assert(require.calledWith('module-name')); 
関連する問題