3

我正在尝试为我的所有 JS 编写测试,并且测试(我正在使用 Jasmine)在浏览器中本地运行。由于安全限制(?) sessionStorage 在 Firefox 中无法本地工作(在浏览器中查看 file:///...)。

快速示例:

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

这给出了“错误:不支持操作”。

我尝试用自己的模拟方法覆盖 window.sessionStorage,但没有运气。

我目前唯一的解决方案是将与 sessionStorage 相关的所有内容放在 try/catch 块中。

有关如何最好地处理此问题的任何建议?

4

2 回答 2

5

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);

但是这个模型不适用于( )代理的索引器来构建对象。sessionStoragewindow.sessionStorage[key] = valuemockup

于 2012-02-24T09:54:34.007 回答
0

如果你使用,你会自动获得本地模拟:http: //nbubna.github.io/store/

于 2013-12-09T16:34:08.380 回答