HtmlUnit 和 jasmine-maven-plugin 是否支持 HTML5 sessionStorage?

Does HtmlUnit and jasmine-maven-plugin support HTML5 sessionStorage?

本文关键字:HTML5 sessionStorage 支持 是否 jasmine-maven-plugin HtmlUnit      更新时间:2023-09-26

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

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

  • 错误:预期是间谍,但获得了功能。

我已经尝试了这个如何在FF中本地处理会话存储(用于测试),然后我遇到了此错误:

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

但是,如果我尝试在导入 jasmine.js 的网页上运行 Jasmine,则测试效果很好。我也试过这个 我可以使用 HTMLUnit 访问 HTML5 存储吗 ,但没有成功。

适用于 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();
});
});

有人有想法吗?

谢谢。

HTMLUnit

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

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

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

谢谢!