我正在尝试在jasmine-maven-plugin上测试使用HTML5 sessionStorage的JavaScript函数。 Jasmine使用HtmlUnit来模拟Web浏览器。
问题是当自动化测试在maven构建期间运行时,它会说:
- 错误:期待间谍,但得到了功能。
我试过这个How to deal with sessionStorage locally in FF (for testing),然后我遇到了这个错误:
- TypeError:类型为object的预期参数,但在文件中有类型对象:...
但是如果我尝试在导入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();
});
});
有没有人有想法?
感谢。
答案 0 :(得分:2)
HTMLUnit不支持许多HTML5功能 - 当您的浏览器支持时,这就是它在浏览器中工作的原因,但不是HTMLUnit构建的一部分。
答案 1 :(得分:0)
正如@Kyle建议的那样,使用带有PhantomJS而不是HtmlUnit的jasmine-maven-plugin上的sessionStorage工作了!
有关详情,请访问:http://searls.github.io/jasmine-maven-plugin/phantomjs.html
谢谢!