JSDom 11.12.0 - 如何模拟localStorage?

fel*_*osh 5 javascript testing jsdom

自JSDom的最新版本发布以来,我再也无法模拟localStorage了.

我尝试了以下方法:

  1. Object.defineProperty(window, 'localStorage', {value: LocalStorageMock})
  2. window.localStorage = LocalStorageMock;
  3. jest.spyOn(window.localStorage, 'setItem')

任何这些方法对我都不起作用,我总是得到原始的localStorage.

小智 8

setItemSpy = jest.spyOn(Storage.prototype, 'setItem');对我有用。

在这里看到了这个修复:https://github.com/facebook/jest/issues/6858#issuecomment-413677180


Dun*_*nBb 3

我在更新 Jest 时实际上遇到了同样的问题,不确定这是否发生在你身上,但我在这里找到了这个修复: https: //github.com/facebook/jest/issues/6766

来自奥利维尔B-OB:

作为临时解决方法,您可以将 jsdom“11.11.0”(准确)安装为包中的开发依赖项。然后,jest-environment-jsdom 应该使用此版本,而不是导致该行为的最新“11.12.0”。干杯!

之后,我在测试设置中模拟了本地存储,间谍活动恢复正常。

然而 localstorage 模拟的实现:https://github.com/facebook/jest/issues/2098 缺少 removeItem,因此您可能需要添加它。