首页 > 解决方案 > 如何以角度创建测试用例以检查本地存储中是否存在值

问题描述

我的component.ts文件

ngOnInit() {

if (localStorage.getItem('distanceUnit' + this.userMobile) == 'km') {
  this.toggleSlider = false;
}

}

设置单位():无效{

if (this.toggleSlider) {
  this.toggleSlider = false;
  localStorage.setItem('distanceUnit' + this.userMobile, 'km');
} else {
  this.toggleSlider = true;
  localStorage.setItem('distanceUnit' + this.userMobile, 'mi');
}

}

我的测试用例在spec.ts 文件中

it('Toggle button should be false in case distance unit km', () => {
        component.toggleSlider = false
        expect(component.toggleSlider).toBe(false);
    });

标签: angularunit-testingkarma-jasmine

解决方案


检查以下代码以获取localStorage测试用例。

 beforeAll( () => {
    let data= {};
    const myLocalStorage = {
      getItem: (key: string): string => {
        return key in store ? store[key] : null;
      },
      setItem: (key: string, value: string) => {
        data[key] = `${value}`;
      },
      removeItem: (key: string) => {
        delete data[key];
      },
      clear: () => {
        data= {};
      }
    };
    spyOn(localStorage, 'getItem')
      .and.callFake(myLocalStorage .getItem);
    spyOn(localStorage, 'setItem')
      .and.callFake(myLocalStorage .setItem);
    spyOn(localStorage, 'removeItem')
      .and.callFake(myLocalStorage .removeItem);
    spyOn(localStorage, 'clear')
      .and.callFake(myLocalStorage .clear);

    localStorage.setItem('localStorageKey', 'value')
  })

推荐阅读