我遇到了通过创建mockRouter并检查方法解决的相同问题nav()
已被调用。
In this HomeComponent
是着陆组件并且AppComponent
正在拥有router.navigate
method.
In my app.component.ts
nav() {
this.router.navigate(['/home']);
}
And my app.component.spec.ts
import { TestBed, async, ComponentFixture, fakeAsync, tick,inject } from '@angular/core/testing';
import { By, BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { RouterModule, Routes } from '@angular/router';
import { Router, RouterOutlet,ActivatedRoute } from "@angular/router";
import { RouterTestingModule } from '@angular/router/testing';
import * as br from '@angular/platform-browser';
describe('Component:AppComponent', () => {
let component: AppComponent;
let fixture: ComponentFixture<AppComponent>;
let debugElement: DebugElement;
let location, router: Router;
let mockRouter;
beforeEach(() => {
mockRouter = { navigate: jasmine.createSpy('navigate') };
TestBed.configureTestingModule({
imports: [RouterTestingModule.withRoutes([
{ path: 'home', component: HomeComponent }
])],
declarations: [AppComponent, HomeComponent],
providers: [
{ provide: Router, useValue: mockRouter},
]
});
});
beforeEach(() => {
fixture = TestBed.createComponent(AppComponent);
component = fixture.componentInstance;
debugElement = fixture.debugElement;
});
it('should go home', async(() => {
fixture.detectChanges();
component.nav();
expect(mockRouter.navigate).toHaveBeenCalledWith(['/home']);
}));
});