2013-07-11 3 views
6

나는 AngularJs를 처음 사용하고 의존성을 가진 지시어를 테스트하는 데 문제가있다. (비록 지시문 자체가 예상대로 작동하지만). 여기 또는 다른 리소스에서 답변을 찾을 수 없습니다.의존성을 지닌 angularjs 지시어 테스트하기

지침 :

angular.module('MyApp') 
    .directive('appVersion', ['config', function (config) { 
    return function (scope, elm) { 
     elm.text(config.version); 
    }; 
    }]); 

서비스 (값) : 여기

내 코드입니다

angular.module('MyApp') 
    .value('config', { 
    version: '0.1' 
    }); 

테스트 :

describe('Directive: AppVersion', function() { 
    beforeEach(module('MyApp')); 

    var element; 

    it('should have element text set to config value', inject(function ($rootScope, $compile, config) { 
     var scope = $rootScope; 
     element = $compile('<app-version></app-version>')(scope); 
     expect(element.text()).toBe(config.version); 
    })); 
}); 

내 테스트 메시지와 함께 실패입니다 :

Error: Expected '' to be '0.1'. 

구성 값이 제대로 주입되었지만 $ complile이 사용하지 않았 음을 의미합니다. 나는 이것에 대한 어떤 도움이라도 정말로 바르게 평가할 것이다. 감사.

답변

3

지시문의 restrict 속성을 지정하지 않았습니다. 지정하지 않으면 요소가 아닌 속성으로 선언 된 app-version에 대한 각도 모양을 의미합니다.

그래서 당신은 지시에 제한 속성을 추가하거나 템플릿을 변경할 수 있습니다 중 하나.

element = $compile('<div app-version></div>')(scope); 
+0

내가 해봤 그뿐만 아니라 전화로'범위 $ 다이제스트()'직접 있지만 결과없이 - 지시어가 실제로 범위를 사용하지 않기 때문에 나는 생각한다. – Tiger

+0

편집 된 답변보기 –

+0

감사합니다. 지금 작동합니다! 그러나 그것은 요소와 속성 모두로 테스트 외부에서 잘 작동한다는 것이 이상합니다. – Tiger

관련 문제