2016-09-26 86 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'));