如何在Angular中测试单元测试void函数?

时间:2018-11-19 06:06:16

标签: angular typescript unit-testing

我是angular的新手,正在测试我的Login组件,它就像这样。它有一个handleLogin()函数,它是无效的。它重定向到另一个函数,如下所示。

loginComponent

如何测试此功能?它重定向到其他功能,也重定向到其他地方。如何测试如此复杂的功能。

2 个答案:

答案 0 :(得分:1)

it('should not be called redirect after login function', () => {
  const loginService = TestBed.inject(LoginService);
  const authService = TestBed.inject(AuthenticationService);
  spyOn(authService, 'isLoggedIn').and.returnValue(false);  // FALSE
  component.ngOnInit();
  expect(loginSerive.redirectAfterLogin).not.toHaveBeenCalled();
}

it('should be called redirect after login function', () => {
  const loginService = TestBed.inject(LoginService);
  const authService = TestBed.inject(AuthenticationService);
  spyOn(authService, 'isLoggedIn').and.returnValue(true); 
  component.ngOnInit();
  expect(loginSerive.redirectAfterLogin).toHaveBeenCalled();
}

it('should be called redirectToAuth function', () => {
  const loginService = TestBed.inject(LoginService);
  spyOn(loginService, 'redirectToAuth').and.callFake; 
  component. handleLogin();
  expect(loginSerive.redirectToAuth).toHaveBeenCalled();
}

答案 1 :(得分:0)

由于涉及到服务,因此您应该“ UNIT” 进行测试,因此,您应该模拟该服务,并期望在调用{{1 }}方法。

类似这样的东西:

handleLogin