【发布时间】:2012-03-22 03:09:31
【问题描述】:
我正在测试一个模块,我想模拟出该模块中的一个依赖项。如果可以的话,让我构想一下我的情景:
在我的模块中
myModule.prototype.func = function(callback) {
complexObj.doStuff('foo', function(err) {
callback(err, 'stuff');
});
};
所以,我基本上是在模拟 complexObj。在这种情况下,我是模拟整个对象还是只模拟 doStuff 函数并不重要。让我们假设doStuff 做了一些类似于与 Web 服务或文件系统交互的事情。 complexObj 正在通过依赖注入注入myModule。我一直在使用 Jasmine 和 Sinon 尝试模拟或存根这个对象和函数,但我没有运气,所以我求助于这样的东西,这似乎有点笨拙:
在我的规范中:
describe('Testing myModule', function() {
it('should do stuff', function() {
ComplexObj.prototype.doStuff = function(arg, callback) {
callback(null); // If no errors, 'doStuff' returns null indicating no errors
};
var complexObj = new ComplexObj();
new myModule(complexObj).func(function(err, results) {
// Set up expectations...
});
});
});
所以,如您所见,我是 psuedo - 模拟 doStuff 对象中的 doStuff 函数。因为我不关心ComplexObj 或doStuff 函数,所以我只是调用带有'null' 的回调,指示func 在doStuff 中没有错误。正如我之前提到的,我觉得应该有更好的方法来处理这个问题?有什么建议吗?
【问题讨论】: