#javascript #local-storage #fetch-mock
#javascript #локальное хранилище #выборка-макет
Вопрос:
Я издеваюсь над localStorage в unitests, например
function storageMock() {
var storage = {};
....
}
и настройка localStorage, например
window.localStorage = localStorageMock()
Он работал нормально, пока я не обновил узел до 10.15.1
.
Это выдает ошибку, которая TypeError: Cannot set property localStorage of #<Window> which has only a getter
.
Есть идеи, как я могу издеваться над localStorage и установить его в window.localStorage .
P.S Я получаю ответы типа setItem
и getItem
на localStorage, есть ли какой-либо способ, которым я могу установить весь localStorage сразу.
Комментарии:
1. Я столкнулся с той же проблемой с 10.16.3. Все еще не решена. Есть какие-либо обновления вашего вопроса?
2. Я получил это после обновления до jsdom 16.4.0 и узла 14.13.0
Ответ №1:
Добавить
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")