2013-08-06 2 views
1

jQuery를 jQuery로 대체하고 실제 응용 프로그램에서 jQuery를 사용할 수 없으므로 (AngularJS) 앱을 jQuery를 사용하지 않고 테스트하고 싶습니다. jQuery와 jqLite에는 실제 차이가 있으므로 유닛 테스트에서 AngularJS에 jQuery를 사용할 수있는 위험이 있습니다.jQuery를 사용하지 않고 필드를 흐리게 처리합니다.

대부분의 테스트는 jQuery 없이도 잘 작동하지만 필자는 필드를 흐리게 처리해야하며 jQuery를 사용하는 방법 만 알 수 있습니다. Javascript에서 크로스 브라우저 방식으로 어떻게 처리 할 수 ​​있습니까?

업데이트 :

it("should set the blur state on blur", function() { 
    angular.element(elm[0][0]).triggerHandler("blur"); 
    expect($rootScope.passwordblur).toBe(true); 
}); 
+0

또한 각 UI를 사용할 수 있습니다 @ http://angular-ui.github.io/ui-utils/ –

답변

1

왜 시도하지 지침 :

app.directive('blurable', function() {   
     return { 
      link: function(scope, element) {    
       element.bind("blur" , function(e){ 
        // blur happens 
       }); 
       scope.triggerBlur = function(){ 
        element.triggerHandler("blur"); 
       } 
      } 
     } 
    }); 
답을받은 후 나는 triggerHandler()가 아니라 지시자 자체 그러나이 같은 단위 테스트를 사용하여 해결

이제 scope에서 "수동"흐림 효과에 대해 triggerBlur 방법을 실행할 수 있습니다.
쿵하는 소리 : http://plnkr.co/edit/wPqRqh

+0

좋은 전에 해당 기능을 본 적이! – Maarten

+0

@Maarten하지만이 스타일이 단위 테스트의 컨텍스트에서 좋은 연습인지 모르겠다. – Cherniv

+0

괜찮을 것이라고 생각한다; 이 유닛은 실제 이벤트로 테스트되며, 트리거 만 시뮬레이션되지만 스텁 등으로 항상 일정한 시뮬레이션이 있습니다. 다른 사람들이 생각하면 제게 알려주세요. – Maarten