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