sinon.js
を使用してrequire
をnode js
にスタブする方法はありますか?ノードjでスタブが必要です
例えば、私はいくつかのファイルがあります:
const myModule = require('awesomeModule');
をそして私は私のテストでは、このようなスタブを持つようにしたい:
myRequireStub.withArgs('awesomModule').throws(new Error('some error'));
sinon.js
を使用してrequire
をnode js
にスタブする方法はありますか?ノードjでスタブが必要です
例えば、私はいくつかのファイルがあります:
const myModule = require('awesomeModule');
をそして私は私のテストでは、このようなスタブを持つようにしたい:
myRequireStub.withArgs('awesomModule').throws(new Error('some error'));
これは動作します:
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
あなたはモジュールを読み込む能力をかなり損なうでしょう。だから、これがどれほど有用であるか分かりません。
用途によっては、おそらく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'));