Angular2,测试和解析数据:如何测试ngOnINit?

前端之家收集整理的这篇文章主要介绍了Angular2,测试和解析数据:如何测试ngOnINit?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究 Angular2 testing guide,并希望为ngOnInit()函数编写一个测试.编程指南的Routing部分中的那个具有以下格式:
  1. let org: Org = null;
  2.  
  3. ngOnInit(): void {
  4. let that = this;
  5.  
  6. this.route.data
  7. .subscribe((data: { org: Org }) => {
  8. that.org = data.org;
  9. });
  10. }

这是通过解析器实现的,例如:

  1. resolve(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Observable<Org> {
  2. let id = this.authService.user.orgId;
  3.  
  4. return this.orgService
  5. .getOrg(id)
  6. .map(
  7. (org: Org) : Org => {
  8.  
  9. if(org) {
  10. return org;
  11. } else {
  12. // If the Org isn't available then the edit page isn't appropriate.
  13. this.router.navigate(['/provider/home']);
  14. return null;
  15. }
  16. })
  17. .first();
  18. }

代码工作正常,但我不知道如何为ngOnInit编写测试.我可以使用的示例假设嵌入式OrgService可以由MockOrgService替换.但是,我所拥有的只是一个解析器.

我最终会弄清楚如何自己测试解析器.我可以使用基于旋转变压器的ngOnInit进行任何有用的测试吗?

谢谢,

杰罗姆.

什么是行为或ngOnInit方法?它所做的就是在解析路径数据时分配组织的值.这就是你真正需要测试的全部内容.
  1. let routeStub;
  2.  
  3. beforeEach(() => {
  4. routeStub = {
  5. data: null
  6. }
  7.  
  8. TestBed.configureTestingModule({
  9. providers: [
  10. { provide: ActivatedRoute,useValue: routeStub }
  11. ]
  12. })
  13. })
  14.  
  15. it('should assign org when route is resolved',async(() => {
  16. let org = new Org()
  17. route.data = Observable.of(org)
  18.  
  19. fixture.detectChanges();
  20. fixture.whenStable().then(() => {
  21. expect(component.org).toEqual(org)
  22. })
  23. }))

猜你在找的Angularjs相关文章