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会自己处理我的问题(而不是我需要使用另一个库或写上述代码)。