0
我正在測試一個模塊,我想模擬出該模塊中的依賴關係。讓我幀我的方案,如果可以的話:有沒有什麼辦法可以用Jasmine或Sinon來模擬這個功能?
在我的模塊
myModule.prototype.func = function(callback) {
complexObj.doStuff('foo', function(err) {
callback(err, 'stuff');
});
};
所以,我想基本上嘲笑complexObj
。在這種情況下,我是否嘲笑整個對象或僅僅是doStuff
函數並不重要。我們假設doStuff
做了一些類似於Web服務或文件系統的交互。 complexObj
正在通過依賴注入注入myModule
。我一直在使用茉莉花和詩乃試圖模擬或存根這個對象和功能,但我沒有運氣,所以我採取了這樣的,這似乎有點kludgy:
在我的規格:
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...
});
});
});
所以,你可以看到,我僞在ComplexObj
對象-mocking了doStuff
功能。由於我不關心ComplexObj
或doStuff
函數,我只是用'null'調用回調,指示func
在doStuff
中沒有錯誤。正如我之前提到的,我覺得應該有更好的方法來處理這個問題?建議?
是不是最好的做法,以'expect'在模擬假冒?我會假設由於'doStuff'永遠不會被調用而沒有執行的期望會導致錯誤的假設。我傾向於設置虛假的虛擬變量,並在調用函數之後期望虛擬變量的內容。 – Giszmo 2014-12-17 04:08:02