模拟 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 回调绑定,所以在单击按钮时触发了表单按钮的默认事件,从而重新加载了测试套件。
我正在尝试编写一个按钮点击测试,它会触发带有一些参数的 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 回调绑定,所以在单击按钮时触发了表单按钮的默认事件,从而重新加载了测试套件。