模拟 Angular navigateByUrl 仍然 运行 页面重新加载

Mocked Angular navigateByUrl still running page reload

我正在尝试编写一个按钮点击测试,它会触发带有一些参数的 navigateByUrl 函数调用。

我模拟了路由器并提供给测试模块

let mockRouter = {
navigateByUrl: jasmine.createSpy("navigateByUrl").and.callFake(() => {
  console.log("fake is called");
}),
};

beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [HttpClientModule],
      declarations: [RecoverPasswordComponent],
      providers: [{ provide: Router, useValue: mockRouter }],
    }).compileComponents();
  }));

当我单击按钮并触发 navigateByUrl 时,我得到了所写的控制台,但我也收到了 Some of your tests did a full page reload! 的错误,这意味着实际的 navigateByUrl 被触发了。

我不明白,如果函数被侦测到,为什么会触发实际的函数调用?

我终于明白是什么原因造成的了! 所以基本上我有一个表单,其中声明了我的按钮,因为该表单未与 ng-submit 回调绑定,所以在单击按钮时触发了表单按钮的默认事件,从而重新加载了测试套件。