【发布时间】: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