如何测试路由器订阅

时间:2019-05-09 11:27:21

标签: angular karma-jasmine angular-unit-test

我正在ngOnInit上进行路由。

constructor(private route: ActivatedRoute)

ngOnInit() {
  this.route.queryParamMap.subscribe(params => {
     this.mode = 'test';
  })
}

我能够测试组件中的所有其他方法,但不确定如何测试的路由除外。对于这样的问题,我也没有看到确切的答案。

任何人都可以帮助编写此单元测试。

2 个答案:

答案 0 :(得分:0)

由于我的评论不足,因此我将尽力提供帮助。 ngOnInit()挂钩仅在加载组件时被调用一次。

console.log(this.mode)返回什么?

答案 1 :(得分:0)

您必须在“测试床”的提供商列表中注入“ Router”和“ ActivatedRoute”。像下面这样。

class RouterStub {
  url = '...';
  navigate(urlName: string) {
    return urlName;
  }
}

class MockActivatedRoute {
  queryParams = Observable.from([{}]);
} 

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      providers: [...
        { provide: Router, useClass: RouterStub },
        { provide: ActivatedRoute, useClass: MockActivatedRoute } ..
      ]
    })