Javascript TypeError:无法设置#<;的属性localStorage;窗口>;它只有一个getter
我在模仿Unitest中的localStorage,比如Javascript TypeError:无法设置#<;的属性localStorage;窗口>;它只有一个getter,javascript,local-storage,fetch-mock,Javascript,Local Storage,Fetch Mock,我在模仿Unitest中的localStorage,比如 function storageMock() { var storage = {}; .... } 并将本地存储设置为 window.localStorage = localStorageMock() 它工作正常,直到我将节点更新为10.15.1 抛出的错误是TypeError:无法设置#的属性localStorage,它只有一个getter 知道我如何模拟localStorage并将其设置为window.localS
function storageMock() {
var storage = {};
....
}
并将本地存储设置为
window.localStorage = localStorageMock()
它工作正常,直到我将节点更新为10.15.1
抛出的错误是TypeError:无法设置#的属性localStorage,它只有一个getter
知道我如何模拟localStorage并将其设置为window.localStorage吗
另外,我在localStorage上得到了类似于setItem
和getItem
的答案,有没有办法一次设置整个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")
我在10.16.3中遇到了同样的问题。仍然没有解决。您的问题有什么更新吗?我是在升级到JSDOM16.4.0和Node14.13.0之后得到的