我要测试以下代码:
@Output() selectedProfile = new EventEmitter<Profile>();
onProfileSelected(profile: profile) {
if (profile) {
this.selectedProfile.emit(profile);
this.router.navigate(
['profiles/' + profile.id],
{relativeTo: this.route}
);
}
}
测试设置为:
escribe('ExportProfileSelectorComponent', () => {
let component: ExportProfileSelectorComponent;
let fixture: ComponentFixture<ExportProfileSelectorComponent>;
let routerSpy;
let router;
const profiles: Profile[] = [...mockProfiles];
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [MyComponent],
});
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
router = TestBed.get(Router);
routerSpy = spyOn(router, 'navigate');
fixture.detectChanges();
});
it('should trigger navigate => {
component.onProfileSelected(profiles[0]);
expect(routerSpy).toHaveBeenCalled();
});
我从业力中得到的唯一输出是: 预期的间谍导航已被调用。
所以实际上我不明白为什么不叫间谍。