Как работать с sessionStorage локально в FF (для тестирования) - PullRequest
3 голосов
/ 24 февраля 2012

Я пытаюсь написать тесты для всех моих JS, и тесты (я использую Jasmine) выполняются локально в браузере.Из-за ограничений безопасности (?) SessionStorage не работает локально (просмотр файла: /// ... в браузере) в Firefox.

Быстрый пример:

window.sessionStorage.setItem('foo', 'bar');

Это дает "Ошибка: операция не поддерживается ".

Я попытался переопределить window.sessionStorage с помощью своих собственных ложных методов, но безуспешно.

Единственное решение, которое у меня есть на данный момент, - это связать вседля sessionStorage внутри блока try / catch.

Есть предложения о том, как лучше всего решить эту проблему?

Ответы [ 2 ]

5 голосов
/ 24 февраля 2012

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) Proxy для создания объекта mockup.

0 голосов
/ 09 декабря 2013

Если вы используете: http://nbubna.github.io/store/

, вы автоматически получаете местное издевательство
...