我想知道在导航到路线时是否有办法测试哪个组件是实例化的。
我有这条路线:
const routes: Routes = [{path: ':anyString', component: AnyStringComponent}];
我想用单元测试进行测试:
router.navigate(['azdfz4896']);
// expect instantiated component to be AnyStringComponent
有没有办法测试?
答案 0 :(得分:1)
你可以模仿ActivatedRoute 并尝试:
route.snapshot._routeConfig.component.name
获取组件名称
ActivatedRoute mock:
export class MockActivatedRoute implements ActivatedRoute{
component : Type<any>|string;
snapshot : ActivatedRouteSnapshot;
url : Observable<UrlSegment[]>;
params : Observable<Params>;
queryParams : Observable<Params>;
data : Observable<Data>;
outlet : string;
...
}
...
你的考试
router = TestBed.get(Router);
location = TestBed.get(Location);
router.initialNavigation();
....
it('navigate to "search" takes you to /search', fakeAsync(() => {
route = new MockActivatedRoute();
router.navigate(['azdfz4896']);
tick();
expect(location.path()).toBe('/azdfz4896');
expect(route.snapshot.component.name).toBe('AnyStringComponent');
}));
希望这会对你有所帮助