0
是否有任何方式存根require
在node js
使用sinon.js
?存根要求在節點js
例如,我有一些文件:
const myModule = require('awesomeModule');
而且我想在我的測試,存根:
myRequireStub.withArgs('awesomModule').throws(new Error('some error'));
是否有任何方式存根require
在node js
使用sinon.js
?存根要求在節點js
例如,我有一些文件:
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'));