Node.js 模拟包含仅浏览器代码的节点模块依赖项

Node.js 模拟包含仅浏览器代码的节点模块依赖项,node.js,unit-testing,browserify,sinon,Node.js,Unit Testing,Browserify,Sinon,我目前正在尝试使用Browserify测试为浏览器绑定的各个节点模块。我正在使用Rewire和Sinon的组合来模拟任何我不想测试的依赖项。这在很大程度上起作用 我的主要问题是,当我需要一个包含另一个require调用的模块时,该模块具有前端依赖性 // This is module #1 - what I'm wanting to test var module2 = require('module2'); // This is module #2 - which I can mock wi

我目前正在尝试使用Browserify测试为浏览器绑定的各个节点模块。我正在使用Rewire和Sinon的组合来模拟任何我不想测试的依赖项。这在很大程度上起作用

我的主要问题是,当我需要一个包含另一个require调用的模块时,该模块具有前端依赖性

// This is module #1 - what I'm wanting to test
var module2 = require('module2');

// This is module #2 - which I can mock with rewire
var module3 = require('module3'); // This is still executed
module.exports = something;

// This is module #3
var audioContext = new AudioContext(); // Browser-only API
module.exports = something
我想完全模仿模块2中的require。我甚至不希望它试图要求模块3,因为当它不理解用于浏览器的代码时,它就会死掉。摩卡吐出:

ReferenceError: AudioContext is not defined
这可能吗?如果不是,什么是好的解决方法?我想我可以使用Karma在浏览器中启动测试,但这似乎是一个很大的开销,只是为了得到一个我不想测试的依赖项