【发布时间】:2017-02-03 17:22:43
【问题描述】:
有没有办法使用sinon.js 将require 存根到node js 中?
例如,我有一些文件:
const myModule = require('awesomeModule');
我想在我的测试中有这样的存根:
myRequireStub.withArgs('awesomModule').throws(new Error('some error'));
【问题讨论】:
有没有办法使用sinon.js 将require 存根到node js 中?
例如,我有一些文件:
const myModule = require('awesomeModule');
我想在我的测试中有这样的存根:
myRequireStub.withArgs('awesomModule').throws(new Error('some error'));
【问题讨论】:
根据您的使用情况,最好使用诸如mockery 或mock-require 之类的库。但是我需要一种方法来存根 所有 对 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'));
【讨论】:
这行得通:
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
但是,通过 stubing require 几乎会破坏加载模块的能力,所以我不确定这有多大用处。
【讨论】: