有谁知道如何测试Router NavigationEnd Event
?我在Angular 2中有以下代码,我正在使用Jasmine。
import { Injectable, EventEmitter } from '@angular/core';
import { Router, NavigationEnd, Event } from '@angular/router';
@Injectable()
export class IhmPageClassService {
emitPageClass = new EventEmitter<string>();
currentRoute: string;
constructor(router: Router) {
router.events.subscribe((event: Event) => {
if (event instanceof NavigationEnd) {
this.currentRoute = (<NavigationEnd>event).url;
}
});
}
}
感谢。
答案 0 :(得分:2)
所以我有一些运气使用主题进行测试。
在测试设置中,您可以创建eventsSubject。
let eventsSub = new BehaviorSubject<any>(null);
然后创建你的routerStub:
routerStub = {
events: eventsSub
}
然后创建NavigationEnd对象。
let homeNav = new NavigationEnd(1, 'home', 'home');
现在使用routerStub作为测试中Router
服务的值,您现在应该能够测试您的功能。
it('should set the currentRoute correctly', () => {
eventSub.next(homeNav);
fixture.detectChanges();
expect(component.currentRoute).toEqual('home')
});
答案 1 :(得分:-1)