【问题标题】:Does HtmlUnit and jasmine-maven-plugin support HTML5 sessionStorage?HtmlUnit 和 jasmine-maven-plugin 是否支持 HTML5 sessionStorage?
【发布时间】:2012-07-04 03:40:28
【问题描述】:

我正在尝试在 jasmine-maven-plugin 上测试使用 HTML5 sessionStorage 的 JavaScript 函数。 Jasmine 使用 HtmlUnit 来模拟 Web 浏览器。

问题是当自动化测试在 maven 构建期间运行时,它说:

  • 错误:预期是间谍,但得到了函数。

我试过这个How to deal with sessionStorage locally in FF (for testing),然后我得到了这个错误:

  • TypeError:类型对象的预期参数,但文件中有类型对象:...

但是,如果我尝试在导入 jasmine.js 的网页上运行 Jasmine,则测试效果很好。 我也试过这个Can I access HTML5 storages using HTMLUnit,但没有成功。

适用于 http://tryjasmine.com/ 而不适用于 jasmine-maven-plugin 的代码示例:

function alertItem(id) {
console.log("start");
var x = sessionStorage.getItem(id);
alert(x);
}

describe("sessionStorage test", function () {    
console = {
    log : function() {},
    error : function() {},
    warn : function() {}
};

var mockup = function() {
    var table = {};
    return {
        getItem: function(key) {
            return table[key];
        },
        setItem: function(key, value) {
            table[key] = value.toString();
        },
        removeItem: function(key) {
            table.pop();
        },      
        clear: function() {
            table = {};
        }
    };
}();

Object.defineProperty(window, 'sessionStorage', {
    value: mockup
});


it("must work", function () {
    console.log("testing...");
    spyOn(sessionStorage, 'getItem').andReturn("my value");
    alertItem("id");
    expect(sessionStorage.getItem).toHaveBeenCalled();
});
});

有人有想法吗?

谢谢。

【问题讨论】:

    标签: javascript html unit-testing htmlunit jasmine-maven-plugin


    【解决方案1】:

    HTMLUnit 不支持许多 HTML5 功能 - 而您的浏览器支持,这就是为什么它可以在浏览器中工作,但不能作为 HTMLUnit 构建的一部分。

    【讨论】:

    • 感谢@Mike 的回答。你知道任何在没有 HTMLUnit 的情况下运行 jasmine 的 maven 插件吗?还是 HTMLUnit 团队正在努力支持 HTML5?
    • 我在 HTMLUnit sourceforge 上提交了一个错误,但他们似乎没有在处理它,因为它包含 jasmine maven:sourceforge.net/p/htmlunit/bugs/1413
    • 最近添加了对使用 jasmine-maven-plugin 和 PhantomJS 而不是 HtmlUnit 的支持。这里有一个示例配置:searls.github.io/jasmine-maven-plugin/phantomjs.html
    【解决方案2】:

    正如@Kyle 所建议的,在 jasmine-maven-plugin 上使用带有 PhantomJS 而不是 HtmlUnit 的 sessionStorage 有效!

    更多信息请访问:http://searls.github.io/jasmine-maven-plugin/phantomjs.html

    谢谢!

    【讨论】:

      猜你喜欢
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2013-05-10
      • 2022-11-19
      相关资源
      最近更新 更多