预期的间谍导航已使用[['/ login']]调用,但从未调用过

问题描述 投票:0回答:1

我正在为下面的代码块编写测试用例:

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编写的,我使用的是茉莉花+业力。

angular angular7 karma-jasmine angular-testing angular7-router
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.