単一のクラスをエクスポートするモジュールがある場合、どのようにモック/スタブできproxyquire
ますか?
現在、私は次のように動作しているように見えますが、かなり長く、適切に使用していませんproxyquire
:
some-class.js
var SomeClass = function(){
console.log("constructed SomeClass");
}
SomeClass.prototype.shout = function(){
console.log("HELLO!");
}
module.exports = SomeClass;
my-module.js
var SomeClass = require('some-class');
module.exports.doSomething = function(){
var a = new SomeClass();
a.shout();
}
test-my-module.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
(別のライブラリを使用したり、上記のコードを記述したりする必要があるのではなく)問題自体に対処できることを望んでいました。