我正在研究
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;
- });
- }
这是通过解析器实现的,例如:
- 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进行任何有用的测试吗?
谢谢,
杰罗姆.
什么是行为或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)
- })
- }))