我有一個方法我該如何窺探使用Jasmine存在於另一個類中的一個類所調用的方法?
thisSvc.asyncOperation: function(id) {
return thatSvc.getById(id);
是否有可能建立一個間諜,將告訴我,如果thatSvc.getById被調用,或者是這種設計的反模式? AFAIK,間諜只能在單個對象上創建。
我有一個方法我該如何窺探使用Jasmine存在於另一個類中的一個類所調用的方法?
thisSvc.asyncOperation: function(id) {
return thatSvc.getById(id);
是否有可能建立一個間諜,將告訴我,如果thatSvc.getById被調用,或者是這種設計的反模式? AFAIK,間諜只能在單個對象上創建。
你可以在任何你想要的間諜,在茉莉的測試只是確保你得到的服務:
var thisSvc, thatSvc;
beforeEach(inject(function(_thisSvc_, _thatSvc_){
thisSvc = _thisSvc_;
thatSvc = _thatSvc_;
});
it('.asyncOperation should call thatSvc.getById', function(){
spyOn(thatSvc, 'getById');
var id = 4;
thisSvc.asyncOperation(id);
expect(thatSvc.getById).toHaveBeenCalledWith(id);
})
「spyOn()時,該方法在對象上已經存在只能用。對於簡單的測試,這是你最好的選擇。」
根據代碼是如何組織的,你可以輕鬆地創建'thatSvc'一個模擬對象和將它注入你的SUT。 –