如果我有一个导出单个类的模块,我该如何模拟/存根它proxyquire
?
目前我有以下,这似乎工作,但相当冗长并且没有正确使用proxyquire
:
一些类.js
var SomeClass = function(){
console.log("constructed SomeClass");
}
SomeClass.prototype.shout = function(){
console.log("HELLO!");
}
module.exports = SomeClass;
我的模块.js
var SomeClass = require('some-class');
module.exports.doSomething = function(){
var a = new SomeClass();
a.shout();
}
测试我的模块.js
// :::: bit I'd like to avoid ::::::
var cls = require('some-class');
var SomeClassStub = function(){
cls.apply(this, arguments);
};
SomeClassStub.prototype = Object.create(originalCls.prototype);
// :::::::::::::::::::::::::::::::::
var myModule = proxyquire('my-module', {
'some-class': SomeClassStub
});
SomeClassStub.prototype.shout = function(){
console.log("whisper");
}
myModule.doSomething();
请注意,我对模拟(和测试!)相当陌生,所以我可能会遗漏一些明显的东西,但我希望这proxyquire
能解决我的问题本身(而不是我需要使用另一个库或编写上面的代码)。