gpt4 book ai didi

javascript - 如何在 JavaScript 单元测试中模拟 localStorage?

转载 作者:IT王子 更新时间:2023-10-29 02:45:09 24 4
gpt4 key购买 nike

是否有任何库可以模拟 localStorage

我一直在使用 Sinon.JS对于我的大多数其他 javascript 模拟,我发现它真的很棒。

我的初始测试表明 localStorage 拒绝在 firefox 中分配(sadface)所以我可能需要一些破解:/

我现在的选择(如我所见)如下:

  1. 创建我的所有代码都使用的包装函数并模拟它们
  2. 为 localStorage 创建某种(可能很复杂)状态管理(测试前的 localStorage 快照,清理恢复快照)。
  3. ??????

您如何看待这些方法?您认为还有其他更好的方法吗?无论哪种方式,我都会将最终生成的“库”放在 github 上以实现开源。

最佳答案

这是一个用 Jasmine 模拟它的简单方法:

let localStore;

beforeEach(() => {
localStore = {};

spyOn(window.localStorage, 'getItem').and.callFake((key) =>
key in localStore ? localStore[key] : null
);
spyOn(window.localStorage, 'setItem').and.callFake(
(key, value) => (localStore[key] = value + '')
);
spyOn(window.localStorage, 'clear').and.callFake(() => (localStore = {}));
});

如果您想在所有测试中模拟本地存储,请在测试的全局范围内声明上面显示的 beforeEach() 函数(通常的位置是 specHelper.js 脚本)。

关于javascript - 如何在 JavaScript 单元测试中模拟 localStorage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com