调用函数以从单元测试中清除本地存储值 - angular

Calling function to clear localstorage value from unit test - angular

我想测试当我调用我的函数时 localStorage 是否被清除。

组件

ngOnInit() {
    // Logout on reaching login screen so we can login
    this.authService.logout();
  }

authService

logout() {
    // remove logged in user from localStorage
    localStorage.removeItem('currentUser');
  }

测试

fit('ngOnInit should logout user stored in localStorage', () => {
    // Exmample data stored as token
    localStorage.setItem('token', 'someUserToken');

    component.ngOnInit();

    expect(localStorage.getItem('token')).toEqual('{}');
});

有什么办法可以实现吗?

单元测试应该只关注您正在测试的功能。

这意味着您不应检查本地存储是否已清除:这不是您的组件所做的。您的组件调用您的身份验证服务,然后清除存储。

这意味着您应该测试是否调用了正确的方法。

it('ngOnInit should call auth.logout', () => {
    spyOn(component['authService'], 'logout');

    component.ngOnInit();

    expect(component['authService'].logout).toHaveBeenCalled();
});