gpt4 book ai didi

javascript - Angular2,测试和解析数据 : How to test ngOnInit?

转载 作者:太空狗 更新时间:2023-10-29 16:59:13 24 4
gpt4 key购买 nike

我正在处理 Angular2 testing guide并希望为 ngOnInit() 函数编写测试。来自 Routing section of the programming guide 的那个具有这种格式:

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 方法是什么?它所做的只是在解析路由数据时分配 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()
routeStub.data = Observable.of(org)

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

关于javascript - Angular2,测试和解析数据 : How to test ngOnInit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42656045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com