Как бороться с 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/

Другие вопросы по тегам