Поддерживает ли HtmlUnit и jasmine-maven-plugin HTML5 sessionStorage?

Я пытаюсь протестировать функцию JavaScript, которая использует HTML5 sessionStorage на jasmine-maven-plugin. Жасмин использует HtmlUnit для эмуляции веб-браузера.

Проблема в том, что когда во время сборки maven запускаются автоматизированные тесты, он говорит:

  • Ошибка: ожидал шпиона, но получил функцию.

Я пробовал это, как иметь дело с sessionStorage локально в FF (для тестирования), а затем у меня есть эта ошибка:

  • TypeError: Ожидаемый аргумент типа object, но вместо этого имел тип объекта в файле: ...

Но если я попытаюсь запустить Jasmine на веб-странице, импортирующей jasmine.js, тест работает отлично. Я тоже попробовал. Могу ли я получить доступ к хранилищам HTML5 с помощью 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();
});
});

У кого-нибудь есть идея?

Благодарю.

2 ответа

Решение

Как и предложил @Kyle, сессия sessionStorage на jasmine-maven-plugin с PhantomJS вместо HtmlUnit работала!

Более подробная информация по адресу: http://searls.github.io/jasmine-maven-plugin/phantomjs.html

Спасибо!

HTMLUnit не поддерживает многие функции HTML5 - в то время как ваш браузер поддерживает, именно поэтому он будет работать в браузере, но не как часть сборки с HTMLUnit.

Другие вопросы по тегам