Javascript 在Nodejs而非浏览器中执行测试时,在jasmine中存储模拟/间谍会话

Javascript 在Nodejs而非浏览器中执行测试时,在jasmine中存储模拟/间谍会话,javascript,node.js,jasmine,spying,Javascript,Node.js,Jasmine,Spying,我试着在jasmine中监视sessionStorage对象。 我编写了以下代码来实现对真实会话存储的监视 fakeStore = { employee: { id: 123456, emailId: 'admin@domain.com', role: 'admin' } }; fakeStorage = { getItem: (key: string): string => fak

我试着在jasmine中监视sessionStorage对象。 我编写了以下代码来实现对真实会话存储的监视

   fakeStore = {
      employee: {
        id: 123456,
        emailId: 'admin@domain.com',
        role: 'admin'
      }
    };

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

spyOn(sessionStorage, 'getItem').and.callFake(fakeStorage.getItem);
但是遇到错误后,会话存储未定义 我突然意识到我是在NodeJs环境而不是浏览器上执行jasmine测试。
由于NodeJs全局上下文测试用例中没有所谓的sessionStorage,所以测试失败

我必须在浏览器中单独运行此测试,或者完全忽略此测试。
是否有任何方法可以将浏览器的全局
窗口
上下文模拟为NodeJs的
全局

我试图将会话存储添加到nodejs的
global
,但typescript不允许我

如何解决这个问题?

试试这个

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

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

问题不是如何模拟localStorage,而是如何在node.js上运行与浏览器相关的单元测试(它与浏览器的对象(如窗口、位置等)相关)。问题不是如何模拟localStorage,而是如何运行与浏览器相关的单元测试(与浏览器对象(如窗口、位置等)相关的依赖项)