Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HtmlUnit和jasmine maven插件是否支持HTML5会话存储?_Javascript_Html_Unit Testing_Htmlunit_Jasmine Maven Plugin - Fatal编程技术网

Javascript HtmlUnit和jasmine maven插件是否支持HTML5会话存储?

Javascript HtmlUnit和jasmine maven插件是否支持HTML5会话存储?,javascript,html,unit-testing,htmlunit,jasmine-maven-plugin,Javascript,Html,Unit Testing,Htmlunit,Jasmine Maven Plugin,我正在测试一个JavaScript函数,它在jasmine maven插件上使用HTML5会话存储。Jasmine使用HtmlUnit模拟web浏览器 问题在于,当自动化测试在maven构建期间运行时,它会说: 错误:应为间谍,但已获取函数 我尝试了这个,然后我得到了这个错误: TypeError:应为类型对象的参数,但文件中有类型对象: 但是,如果我尝试在导入Jasmine.js的网页上运行Jasmine,测试将非常有效。 我也尝试过,但没有成功 可在jasmine maven插件上工

我正在测试一个JavaScript函数,它在jasmine maven插件上使用HTML5会话存储。Jasmine使用HtmlUnit模拟web浏览器

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

  • 错误:应为间谍,但已获取函数
我尝试了这个,然后我得到了这个错误:

  • TypeError:应为类型对象的参数,但文件中有类型对象:
但是,如果我尝试在导入Jasmine.js的网页上运行Jasmine,测试将非常有效。 我也尝试过,但没有成功

可在jasmine maven插件上工作而不在jasmine maven插件中工作的代码示例:

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插件上使用sessionStorage和PhantomJS,而不是HTMLUnit工作

更多信息,请访问:


谢谢大家!

谢谢@Mike的回答。你知道有哪个maven插件在没有HTMLUnit的情况下运行jasmine吗?或者HTMLUnit团队正在努力支持HTML5?我已经提交了一个关于HTMLUnit sourceforge的bug,但他们似乎没有参与,因为它包括jasmine maven:支持将jasmine maven插件与PhantomJS而不是HTMLUnit一起使用,这是最近添加的。这里有一个配置示例: