Как бороться с sessionStorage локально в FF (для тестирования)
Я пытаюсь написать тесты для всех моих JS, и тесты (я использую Jasmine) выполняются локально в браузере. Из-за ограничений безопасности (?) SessionStorage не работает локально (просмотр файла:///... в браузере) в Firefox.
Быстрый пример:
window.sessionStorage.setItem('foo', 'bar');
Это дает "Ошибка: операция не поддерживается".
Я попытался переопределить window.sessionStorage с помощью моих собственных методов, но безуспешно.
Единственное решение, которое у меня есть на данный момент, - поместить все, что связано с sessionStorage, в блок try/catch.
Любые предложения о том, как лучше всего решить эту проблему?
2 ответа
Object.defineProperty
Кажется, работает с этим, вы можете издеваться sessionStorage
используй это:
var mockup = function() {
var table = {};
return {
getItem: function(key) {
return table[key];
},
setItem: function(key, value) {
table[key] = value.toString();
},
clear: function() {
table = {};
}
};
}();
Object.defineProperty(window, 'sessionStorage', { value: mockup });
// should output "Object { getItem=function(), setItem=function(), clear=function()}"
console.log(window.sessionStorage);
но этот макет не работает с индексатором sessionStorage
(window.sessionStorage[key] = value
) Прокси для сборки mockup
объект.
Вы получаете местное издевательство автоматически, если вы используете: http://nbubna.github.io/store/