2013-08-11 2 views

답변

3

귀하의 경우에는 컴파일 된 요소 범위에서 컨트롤러 기능에 액세스하여 요소 컨트롤러를 테스트 할 수 있습니다.

요소의 범위에 액세스하는 가장 쉬운 방법은 angular element#scope() 함수를 호출하는 것입니다.

it ('should have a function X on scope', inject(function($rootScope, $compile) { 
    var element = $compile('<div test-directive></div>')($rootScope); 
    expect(element.scope().myFunction).toEqual(jasmine.any(Function)); 
}); 

다음은 jsFiddle에서 사용되는 다음 기술의 간단한 예입니다.

+0

지시문이 요소이고,로드에 실패한 다른 HTML에서 템플릿을로드했습니다. 카르마 설정은 어떻게 생겼습니까? – Yoti

+0

하나의 옵션은 beforeEach (module ('template.html'))를 사용하여 템플릿을로드하는 것입니다. 무늬. 그 기술의 훌륭한 예가 https://github.com/vojtajina/ng-directive-testing에 나와 있습니다. 또 다른 옵션은 템플릿을 URL에 의해 $ templateCache에 추가하여 템플릿을 모방하는 것입니다. 그런 다음 지시문이 템플릿을로드하려고하면 캐시에서 템플릿을 가져옵니다. – Kirstein

+0

이것은 더 이상 각도 1.2.x에서 작동하지 않습니다 - http://jsfiddle.net/lukem/VL9fm/4/를 참조하십시오 - 수정 방법에 대한 아이디어가 있습니까? –

관련 문제