这个错误通常是因为在测试中,调用了实际的router导航而不是使用spy对象。为解决此问题,可以在测试前创建spy对象,并在导航时使用它。
示例代码:
import { Router } from '@angular/router';
import { spy } from 'sinon'; // 需要先安装sinon库
describe('ComponentName', () => {
let routerSpy: any; // 声明routerSpy变量
beforeEach(() => {
routerSpy = spy(); // 创建spy对象
TestBed.configureTestingModule({
providers: [
{ provide: Router, useValue: { navigateByUrl: routerSpy } } // 将routerSpy注入到Router
]
});
});
it('should navigate by URL', () => {
const router = TestBed.get(Router); // 获取Router对象
fixture = TestBed.createComponent(ComponentName);
component = fixture.componentInstance;
const url = '/test';
component.navigateTo(url);
expect(routerSpy).toHaveBeenCalledWith(url); // 使用routerSpy
});
});