angular - 如何以 Angular 创建测试用例以检查本地存储中是否存在值

标签 angular unit-testing karma-jasmine

我的component.ts文件

ngOnInit() {

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

}

setUnit(): 无效{

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

最佳答案

检查以下代码以了解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')
  })

关于angular - 如何以 Angular 创建测试用例以检查本地存储中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63051890/

相关文章:

angular - 没有 AngularFirestore 的提供者

javascript - node.js istanbul 和 jasmine 设置

类型 'url' 上不存在 Angular 属性 'ActivationEnd'

Angular 不适用于 safari 浏览器

python - 如何处理动态语言中错误的参数类型?

c# - 如何在单元测试中模拟 DateTime.Now?

angularjs - 使用 Jasmine 和 PhantomJS 进行 Angular JS 测试,0 错误

components - Angular 2如何将变量从父组件传递到路由器导出

Angular 2 : Module not found: Error: Can't resolve

javascript - jasmine:在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时时间内未调用异步回调