Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从测试调用localstorage clear函数-angular_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 从测试调用localstorage clear函数-angular

Javascript 从测试调用localstorage clear函数-angular,javascript,angular,typescript,Javascript,Angular,Typescript,我想测试一下,无论何时调用我的函数,本地存储都会被清除 组件 ngOnInit() { // Logout on reaching login screen so we can login this.authService.logout(); } authService logout() { // remove logged in user from localStorage localStorage.removeItem('currentUser');

我想测试一下,无论何时调用我的函数,本地存储都会被清除

组件

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();
});

您删除了
currentUser
,但您希望
令牌
等于
{}
。。。你没事吧?天啊。。。我是瞎子@谢谢你指出我的错误。现在所有的工作。没问题,考虑阅读我的答案也为最佳实践,我不能把这两件事纳入一个测试?ie有
localStorage.setItem('token','blah')然后期望它在下面被清除?在实践中,我尝试过这个方法,但它没有清除本地存储…你可以,但这不是最佳实践(甚至可能不是单元测试)仍然是相同的答案:根据定义,单元测试测试一个单元:如果你测试你的服务做了什么,你就测试了两个单元。好的,我现在正确理解你的意思了。本单元仅用于调用authService.logout,我正在尝试合并到您展示的测试中的测试应该在authService.spec中使用,以测试注销函数本身!谢谢:-)还有。。。我一直在寻找如何监视这样的事情!救命恩人!没问题,想办法找到贾斯敏所能做的一切!