seantrant
5/7/2019 - 8:12 AM

Mock local storage session storage karma, Jasmine

My working example uses a testbed


in beforeEach:

    let store = {};
      const mockSessionStorage = {
        getItem: (key: string): string => {
          return key in store ? store[key] : null;
        },
        setItem: (key: string, value: string) => {
          store[key] = `${value}`;
        },
        removeItem: (key: string) => {
          delete store[key];
        },
        clear: () => {
          store = {};
        }
      };
      spyOn(sessionStorage, 'getItem')
        .and.callFake(mockSessionStorage.getItem);
      spyOn(sessionStorage, 'setItem')
        .and.callFake(mockSessionStorage.setItem);
      spyOn(sessionStorage, 'removeItem')
        .and.callFake(mockSessionStorage.removeItem);
      spyOn(sessionStorage, 'clear')
        .and.callFake(mockSessionStorage.clear);
  });
  
  
  in test
  
    //   sessionStorage.setItem('cached-current-request-id', JSON.stringify({ currentRequestId: '12345'}));