我在像这样的 unitests 中 mock localStorage
function storageMock() {
var storage = {};
....
}
并设置 localStorage 之类的
window.localStorage = localStorageMock()
它工作正常,直到我将 Node 更新为
10.15.1
.TypeError: Cannot set property localStorage of #<Window> which has only a getter
是抛出错误.关于如何模拟 localStorage 并将其设置为 window.localStorage 的任何想法。
P.S 我得到的答案是
setItem
和 getItem
在 localStorage 上,有什么方法可以一次设置整个 localStorage。
最佳答案
添加
Object.defineProperty(window, 'localStorage', {
value: storageMock
});
完整示例:const localStorageMock = (() => {
let store = {};
return {
getItem(key) {
return store[key] || null;
},
setItem(key, value) {
store[key] = value.toString();
},
removeItem(key) {
delete store[key];
},
clear() {
store = {};
}
};
})();
Object.defineProperty(window, 'localStorage', {
value: localStorageMock
});
window.localStorage.setItem("KEY", "INPUT")
关于javascript - 类型错误 : Cannot set property localStorage of#<Window> which has only a getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55606853/