Я пишу тестовый пример для блока кода ниже:
someFn() {
if (this.loginStatus === '1') {
this.router.navigate(['/login']);
}
}
В моем файле spe c:
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, и я использую жасмин + карма.