我正在为下面的代码块编写测试用例:
someFn() {
if (this.loginStatus === '1') {
this.router.navigate(['/login']);
}
}
在我的规格文件中:
import { Router } from '@angular/router'
describe('MyComponent', () => {
let routerStub;
beforeEach(async(() => {
routerStub = {
navigate: jasmine.createSpy('navigate'),
};
TestBed.configureTestingModule({
declarations: [MyComponent],
providers: [
{ provide: Router, useValue: routerStub },
],
}).compileComponents()
});
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.autoDetectChanges();
});
it('navigate to login', () => {
component.loginStatus = '1';
component.someFn();
expect(routerStub.navigate).toHaveBeenCalledWith(['/login']);
});
})
上面给了我错误:预期的间谍导航已被[['/ login']]调用,但从未被调用。
我该如何解决?我从SO尝试了很多解决方案,但似乎没有任何效果。
代码是用Angular 7编写的,我使用的是茉莉花+业力。