2017-03-07 9 views
3

私はAngular2 testing guideで作業しており、ngOnInit()関数のテストを作成したいと考えています。コードはOK動作しますが、私はどのようにわからないAngular2、テストと解決されたデータ:ngOnINitのテスト方法

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(); 
} 

:のようにこれは、リゾルバによって満たされる

let org: Org = null; 

ngOnInit(): void { 
    let that = this; 

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

:プログラミングガイドのルーティング部から1がこの形式を持っていますngOnInitのテストを書く。私が利用できる例では、埋め込まれたOrgServiceをMockOrgServiceに置き換えることができると仮定しています。しかし、私が持っているのは決議です。

最終的に、リゾルバを単独でテストする方法を理解します。リゾルバベースのngOnInitで行うことができる有用なテストはありますか?

ありがとう、

Jerome

+0

私はngOnInitは角度チームの責任であるべきテストし、あなたはちょうどあなたがそれから –

答えて

11

動作またはngOnInitの方法は何ですか?ルートデータが解決されると、orgの値が代入されます。それで、あなたが本当にテストする必要があるのです。

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にも答えたので、それはあなたが私を救ったのは3度目です。それは、「どのようにActivated Routeのプロバイダなし!」を取り除くのですか?エラー。ありがとう、ジェローム。 –

+0

喜んで助けてください... –

関連する問題