2016-10-27 1 views
1
우리는 우리가 할 Angular2에서 서비스에 대한 핸들을 얻고 싶은

...단위 테스트를위한 속성 지시어를 처리하는 방법은 무엇입니까? 최종 릴리스

가 어떻게 핸들을 얻을 수있는 등

let fix = TestBed.createComponent(TestComponent); 
let injector = fix.debugElement.injector; 
let service = injector.get(MyService); 

지금 우리가 주입 된 서비스를 감시 할 수 있습니다, 테스트 구성 요소에서 사용하는 속성 지시문에서 스파이 할 수 있습니까?

답변

1

는 당신은 문제의 지침에 묶여 요소를 대상으로 @peeskillet 대답에 아이 인젝터

let directive = fixture.debugElement.children[0].injector.get(MyDirective); 
+0

대단히 감사합니다. children [0]이 지시어 요소라고 가정하더라도이 대답을 받아 들일 것입니다. 이 가정을하지 않는 나의 자신의 응답을 제공하십시오. 다시 한 번 감사드립니다. – danday74

1

약간의 비틀기에서 그것을 얻을 필요가있다.

let fix = TestBed.createComponent(TestComponent); 
    // this will return multiple elements if the test component uses the directive multiple times 
    let directiveEls = fix.debugElement.queryAll(By.directive(MyDirective)); 
    let directive = directiveEls[0].injector.get(MyDirective) as MyDirective; 
+0

훨씬 더 좋은 대답입니다. –

+0

옳은 길로 인도 해 주셔서 감사합니다 :) – danday74

관련 문제