假设我有一个具有两个功能的模块,其中一个依赖于另一个:
// example.js
function A() {
return "hello";
}
function B() {
return A();
}
module.exports.B = B;
我可以使用重新连接来模拟B()中对A()的调用吗?
// example.test.js
var assert = require('chai').assert,
rewire = require('rewire'),
example = rewire('./example.js');
example.__set__({
A: function( return 'goodbye';),
});
describe('test B in example.js', function() {
it('should return "goodbye"', function() {
assert.strictEqual(example.B(), 'goodbye');
});
});
答案 0 :(得分:0)
是的,这确实有效。我不确定究竟是什么解决了这个问题。以前我是将依赖函数导出为函数原型的一部分(例如function.prototype.dependentFunction = function() { };
),并且不知何故这会弄乱重新连接。我通过首先声明/定义它然后将它附加到模型来重新定义我的函数:
function dependentFunction() { ... }
exportedObject.prototype.dependentFunction = dependentFunction();
这样做解决了我的问题。