2017-03-07 13 views
3

나는 Angular2 testing guide을 통해 작업 중이며 ngOnInit() 함수에 대한 테스트를 작성하려고합니다.Angular2, 테스트 및 해결 된 데이터 : ngOnINit을 테스트하는 방법?

let org: Org = null; 

ngOnInit(): void { 
    let that = this; 

    this.route.data 
    .subscribe((data: { org: Org }) => { 
     that.org = data.org; 
    }); 
} 

이처럼 해결을 통해 성취 : 프로그래밍 가이드의 라우팅 부분에서 하나는이 형식은 코드 확인을 작동

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Org> { 
    let id = this.authService.user.orgId; 

    return this.orgService 
    .getOrg(id) 
    .map(
     (org: Org) : Org => { 

     if(org) { 
      return org; 
     } else { 
      // If the Org isn't available then the edit page isn't appropriate. 
      this.router.navigate(['/provider/home']); 
      return null; 
     } 
    }) 
    .first(); 
} 

을,하지만 난 방법을 잘 모르겠어요 ngOnInit에 대한 테스트를 작성하십시오. 필자가 사용할 수있는 예제는 내장 된 OrgService가 MockOrgService로 대체 될 수 있다고 가정합니다. 그러나 내가 가진 것은 모두 단호한 사람입니다.

나는 결국 스스로 해결자를 테스트하는 방법을 알아낼 것입니다. 리졸버 기반 ngOnInit으로 할 수있는 유용한 테스트가 있습니까?

감사합니다.

제롬.

+0

, 당신은 당신이 그것에서 –

답변

11

동작 또는 ngOnInit 메서드는 무엇입니까? 경로 데이터가 해석 될 때 org의 값이 할당됩니다. 테스트 할 때 그게 전부입니다. 내가 ngOnInit는 각 팀의 책임이 있어야합니다 테스트 생각

let routeStub; 

beforeEach(() => { 
    routeStub = { 
    data: null 
    } 

    TestBed.configureTestingModule({ 
    providers: [ 
     { provide: ActivatedRoute, useValue: routeStub } 
    ] 
    }) 
}) 

it('should assign org when route is resolved', async(() => { 
    let org = new Org() 
    route.data = Observable.of(org) 

    fixture.detectChanges(); 
    fixture.whenStable().then(() => { 
    expect(component.org).toEqual(org) 
    }) 
})) 
+2

섹시한 호출하는 방법을 테스트해야한다! 당신이 저를 모른 채 다른 Q에 대답했기 때문에 그것은 저를 구원 한 세 번째 때입니다. 즉 : "활성화 된 경로의 공급자 없음"을 제거하려면 어떻게해야합니까? 오류. 고마워, 제롬. –

+0

기꺼이 도와 드리겠습니다 ... –