JSDom11.12.0-如何模拟localStorage?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (234)

自JSDom的最新版本发布以来,我无法用localStorage再进行模拟了。

我尝试了以下方法:

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

任何一种方法对我都没用,我一直都得到了原版localStorage

提问于
用户回答回答于

可以使用npm提供的dom-storage(https://www.npmjs.com/package/dom-storage)软件包:

const Storage = require('dom-storage');
global.localStorage = new Storage(null, { strict: true });
global.sessionStorage = new Storage(null, { strict: true });

使用的最新版本jsdom对于我们的单元测试和上面的方法是非常有效的。

用户回答回答于

实际上,我在更新Jest时遇到了同样的问题,我在这里发现了这个修复:https://github.com/facebook/jest/issues/6766

来自OlivierB-OB:

As a temporary workaround you can install jsdom "11.11.0" (exact) as a dev-dependency in your package. jest-environment-jsdom should then use this version instead of the lastest "11.12.0" causing the behavior. Cheers!

之后,我在测试设置中模拟localstorage并且spying恢复正常。

本地存储模拟的实现:https://github.com/facebook/jest/issues/2098,但是可能缺少远程服务,所以你可能需要添加它。

所属标签

可能回答问题的人

  • EatRice

    16 粉丝0 提问5 回答
  • gulu丶咕噜

    0 粉丝1 提问4 回答
  • 华讯云

    0 粉丝0 提问4 回答
  • 发条丶魔灵1

    9 粉丝526 提问3 回答

扫码关注云+社区

领取腾讯云代金券