2014-12-03 30 views
0

我想測試Jasmine的toHaveBeenCalled()匹配器。 我SRC:錯誤spyOn toHaveBeenCalled在模型測試

function myModel(){ 
} 

    myModel.prototype.getObjcts = function(){ 
    return DS.findAll('obj', {}); 
    } 

還有茉莉花測試:

describe('findAll', function(){ 
     it('check calling findAll()', function(){ 
     spyOn(DS, 'findAll'); 
     myModel.getObjcts(); 
     expect(DS.findAll('obj', {})).toHaveBeenCalled(); 
     }); 
    }); 

但我得到預期的間諜錯誤

,卻得到了不確定

時請,幫助我瞭解問題出在哪裏

回答

0
  1. 您應該實例類型的新對象基於myModel
  2. 您的期望再次呼籲DS.finadAll而不是檢查間諜。

下面是完整的解決方案:

window.DS = { 
    findAll: function (param1, param2) {} 
}; 


function myModel() {} 

myModel.prototype.getObjcts = function() { 
    return DS.findAll('obj', {}); 
}; 


describe('findAll', function() { 
    it('check calling findAll()', function() { 
     spyOn(DS, 'findAll'); 
     var testApp = new myModel(); 
     testApp.getObjcts(); 
     expect(DS.findAll).toHaveBeenCalledWith('obj', {}); 
    }); 
}); 

你可以找到的jsfiddle here

一個可運行的解決方案