Mock/Spy sessionStorage in jasmine when executing tests in Nodejs and not Browser

8.2k Views Asked by At

I was trying to spyOn sessionStorage object in jasmine. I've written the following code to achieve spying on real sessionStorage

   fakeStore = {
      employee: {
        id: 123456,
        emailId: '[email protected]',
        role: 'admin'
      }
    };

    fakeStorage = {
      getItem: (key: string): string => fake Store[key]
    };

spyOn(sessionStorage, 'getItem').and.callFake(fakeStorage.getItem);

But after encountering the error sessionStorage is undefined
I suddenly realised that I'm executing the jasmine tests on NodeJs environment rather than browser.
Since there is not such thing called sessionStorage in NodeJs global context test case failed.

I have to either run this test alone in browser or completely ignore.
Is there any way I can simulate browser's global window context as NodeJs's global

I've tried to add sessionStorage into global of nodejs,but typescript didn't let me....

How to solve this ?

1

There are 1 best solutions below

1
On

try this

spyOn(window.sessionStorage, 'getItem').and.callFake(()=>{})