proxyquire with require.exports = ClassConstructor
如果我有一个导出单个类的模块,我该如何用proxyquire
模拟/存根?
目前我有以下几个,似乎工作,但相当长,并没有正确使用proxyquire
:
一些-class.js
var SomeClass = function(){ console.log("constructed SomeClass"); } SomeClass.prototype.shout = function(){ console.log("HELLO!"); } module.exports = SomeClass;
我-module.js
var SomeClass = require('some-class'); module.exports.doSomething = function(){ var a = new SomeClass(); a.shout(); }
testing我的-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();
请注意,我是相当新的嘲笑(和testing!),所以我可能会失去明显的东西,但我希望proxyquire
会自己处理我的问题(而不是我需要使用另一个库或写上述代码)。