我正在研究
Angular2 testing guide,并希望为ngOnInit()函数编写一个测试.编程指南的Routing部分中的那个具有以下格式:
let org: Org = null; ngOnInit(): void { let that = this; this.route.data .subscribe((data: { org: Org }) => { that.org = data.org; }); }
这是通过解析器实现的,例如:@H_404_4@
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替换.但是,我所拥有的只是一个解析器.@H_404_4@
我最终会弄清楚如何自己测试解析器.我可以使用基于旋转变压器的ngOnInit进行任何有用的测试吗?@H_404_4@
谢谢,@H_404_4@
杰罗姆.@H_404_4@
什么是行为或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) }) }))