调用函数以从单元测试中清除本地存储值 - 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();
});
我想测试当我调用我的函数时 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();
});