Angular的Jasmine测试用例2-导航到其他页面

时间:2016-12-01 00:51:36

标签: javascript angular jasmine karma-jasmine

我正在使用jasmine编写角度2代码的测试用例。我试图在用户注销后导航回登录页面。如何测试页面位置?

2 个答案:

答案 0 :(得分:3)

您真正需要做的就是测试使用正确的参数(即登录页面的路由)调用路由器导航方法。尝试测试实际导航可能会导致比单元测试所需的更多副作用。

要检查是否调用了Router.navigate方法,只需使用存根并监视它。

@Component({})
class SomeComponent {
  constructor(private router: Router) {}

  logout() {
    this.router.navigate(['/login'])
  }
}

let routerStub;

beforeEach(() => {
  routerStub = {
    navigate: jasmine.createSpy('navigate');
  }
  TestBed.configureTestModule({
    declaration: [ SomeComponent ],
    providers: [
      { provide: Router, useValue: routerStub }
    ]
  });
});

it('it should navigate to login after user logs out', () => {
  let component = TestBed.createComponent(SomeComponent).componentInstance;
  component.logout();

  expect(routerStub.navigate).toHaveBeenCalledWith(['/login']);
})

答案 1 :(得分:0)

Angular团队一直致力于将测试纳入角度环境的所有原生方面。如果您使用的是原生角度路由器,那么他们已经构建了测试供您使用。看看这个BLOG。如果您没有使用角度路由器,那么我认为您自己就是这样。