有没有可以模拟的库localStorage
?
我一直在使用Sinon.JS对于我的大多数其他 javascript 模拟,我发现它真的很棒。
我的初步测试表明 localStorage 拒绝在 Firefox 中分配(sadface),所以我可能需要对此进行某种破解:/
目前我的选择(据我所知)如下:
- 创建我所有代码使用的包装函数并模拟它们
- 为 localStorage 创建某种(可能很复杂)状态管理(测试前的本地存储快照,在清理恢复快照中)。
??????
您如何看待这些方法?您认为还有其他更好的方法吗?不管怎样,我都会把最终制作的“库”放在 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()
上面显示的函数在测试的全局范围内(通常的位置是规范助手.js脚本)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)