4
지시문에 컨트롤러가 정의되어 있고 단위 테스트에 문제가 있습니다. 컨트롤러를 지시문에서 글로벌화하거나 분리하지 않고도이 작업을 수행 할 수 있습니까? 간단한 예제를 추가 할 수 있습니까 ??지시문에서 단위 제어기 기능을 단위 테스트하십시오.
지시문에 컨트롤러가 정의되어 있고 단위 테스트에 문제가 있습니다. 컨트롤러를 지시문에서 글로벌화하거나 분리하지 않고도이 작업을 수행 할 수 있습니까? 간단한 예제를 추가 할 수 있습니까 ??지시문에서 단위 제어기 기능을 단위 테스트하십시오.
귀하의 경우에는 컴파일 된 요소 범위에서 컨트롤러 기능에 액세스하여 요소 컨트롤러를 테스트 할 수 있습니다.
요소의 범위에 액세스하는 가장 쉬운 방법은 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에서 사용되는 다음 기술의 간단한 예입니다.
지시문이 요소이고,로드에 실패한 다른 HTML에서 템플릿을로드했습니다. 카르마 설정은 어떻게 생겼습니까? – Yoti
하나의 옵션은 beforeEach (module ('template.html'))를 사용하여 템플릿을로드하는 것입니다. 무늬. 그 기술의 훌륭한 예가 https://github.com/vojtajina/ng-directive-testing에 나와 있습니다. 또 다른 옵션은 템플릿을 URL에 의해 $ templateCache에 추가하여 템플릿을 모방하는 것입니다. 그런 다음 지시문이 템플릿을로드하려고하면 캐시에서 템플릿을 가져옵니다. – Kirstein
이것은 더 이상 각도 1.2.x에서 작동하지 않습니다 - http://jsfiddle.net/lukem/VL9fm/4/를 참조하십시오 - 수정 방법에 대한 아이디어가 있습니까? –