可能是因为在Jasmine测试用例中没有正确设置需要测试的应用程序的根。 以下是一个示例代码,展示如何在Jasmine测试用例中设置根并正确使用导航和getCurrentNavigation方法:
import { TestBed, async, ComponentFixture } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { Router } from '@angular/router';
import { MyComponent } from './my.component';
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture;
let router: Router;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ RouterTestingModule ],
declarations: [ MyComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
router = TestBed.inject(Router);
fixture.detectChanges();
});
it('should navigate to home page', () => {
const navigateSpy = spyOn(router, 'navigate');
component.goToHomePage();
expect(navigateSpy).toHaveBeenCalledWith(['/home']);
});
it('should get current navigation', () => {
component.goToHomePage();
expect(router.getCurrentNavigation().extractedUrl.toString()).toBe('/home');
});
});
在上面的示例代码中,测试用例导入了RouterTestingModule,这是为了设置正确的根并初始化路由模块。在beforeEach函数中,我们可以获取到路由的实例,可以通过该实例使用导航并获取当前导航信息。在it函数中,我们使用spyOn来替换navigate方法并检查是否正确导航到了目标页面。在第二个it函数中,我们检查getCurrentNavigation()方法是否能正确返回导航信息对象,并查看其URL是否与所期望的相同。
注意:我们需要确保在测试用例中所使用的路径与应用程序中的路由匹配。并且在测试用例中执行导航操作时,通常会在测试完成后导航回原来的页面,以