Stub需要在节点js中

时间:2016-09-26 11:26:46

标签: node.js require sinon

是否可以使用requirenode js中隐藏sinon.js

例如,我有一些文件:

const myModule = require('awesomeModule');

我希望在我的测试中有这样的存根:

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

2 个答案:

答案 0 :(得分:0)

这有效:

<meta http-equiv="pragma" content="no-cache" >
<meta http-equiv="cache-control" content="no-cache" >

然而,通过对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 进行存根,你几乎会破坏加载模块的能力,所以我不确定这是多么有用。

答案 1 :(得分: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'));