jasmine-maven-pluginでHTML5sessionStorageを使用するJavaScript関数をテストしようとしています。JasmineはHtmlUnitを使用してWebブラウザをエミュレートします。
問題は、Mavenビルド中に自動テストが実行されている場合、次のように表示されることです。
- エラー:スパイが必要ですが、関数を取得しました。
私はこれをFFでローカルにsessionStorageを処理する方法(テスト用)を試しましたが、次のエラーが発生しました:
- TypeError:タイプobjectの引数が必要ですが、代わりにファイルにタイプobjectがあります:..。
しかし、jasmine.jsをインポートするWebページでJasmineを実行しようとすると、テストは完全に機能します。私もこれを試しましたが、 HTMLUnitを使用してHTML5ストレージにアクセスできますが、成功しません。
jasmine-maven-pluginではなくhttp://tryjasmine.com/で機能するコードの例:
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();
});
});
誰かアイデアがありますか?
ありがとう。