2016-09-26 91 views
0

是否有任何方式存根requirenode js使用sinon.js存根要求在节点js

例如,我有一些文件:

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

根据您的使用情况,最好使用库如mockerymock-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'));