2017-04-05 79 views
0

指令如何spyon jQuery函數角度指令裏面茉莉花

  link(scope, element, attrs, ctrl) {  

      element.mouseover(function() { 
       $(element).tooltip('show'); 
      }); 
      $(element).hover(MuiBootstrap.adjustTooltips); 
     } 

茉莉花測試

 it('should show tooltip on mouseover', function() { 
     var spy = spyOn(element, 'mouseover'); 
     $(element).trigger('mouseover'); 
     expect(spy).toHaveBeenCalled(); 
     }); 

以上茉莉關是失敗 錯誤:已被稱爲未捕獲的諜照預計提示。

回答

0

由於您試圖監視mouseover方法,因此只能在指令link函數中調用一次方法,並且您已在調用此方法後安裝間諜方法 - 您安裝間諜偵察函數的時刻已被調用所以間諜不知道這一點。
我建議不測試mouseover本身是否被調用,但是如果mouseover回調是在事件觸發時調用的 - 您實際上是通過tooltip方法(您的錯誤消息建議您窺探工具提示方法)來執行回調。所以只是刪除這個測試,因爲它是點。我假設你想要測試是否調用了mouseover回調函數,而不是調用mouseover方法 - 這兩種方法並不相同。

答案更新: 要測試鼠標懸停回調,你可以定義指令範圍這個回調:

link(scope, element, attrs, ctrl) {  
    scope.mouseoverCallback = function() { 
     $(element).tooltip('show'); 
    }; 
    element.mouseover(scope.mouseoverCallback); 
} 

,然後直接在其上安裝間諜:

it('should call mouseover callback', function() { 
    var yourDirectiveScope = element.scope(); 
    var spy = spyOn(yourDirectiveScope, 'mouseoverCallback').and.callThrough(); 
    element.triggerHandler('mouseover'); 
    expect(yourDirectiveScope.mouseoverCallback).toHaveBeenCalled(); 
}); 
+0

不工作.. Err-未捕獲預期的間諜鼠標懸停被調用。 – Visha

+0

確定..非常感謝您的建議:) – Visha

+0

不客氣:) –