Rspec, Poltergeist, Capybara не работают с аудиофайлами

Использование rspec-rails-3.5.2, полтергейст-1.11.0 и капибара-2.10.1

Я создал аудио объект:

Bart.pumpAudio = new Audio("assets/audio/bart/pump.mp3");

У меня есть кнопка, которая воспроизводит звук при нажатии

<div id="pump-button" class="button">Pump</div>

$("#pump-button").click(function() {
    ...
    Bart.pumpAudio.play();
    ...
});

Это работает, когда я запускаю в браузере, но получаю ошибки при попытке выполнить тесты через rspec:

Код тестирования:

page.find("#pump-button").trigger('click')

Ошибка тестирования:

TypeError: 'undefined' is not a function (evaluating 'Bart.pumpAudio.play()')

Любые идеи о том, как решить эту проблему??


person KBouldin9    schedule 18.11.2016    source источник


Ответы (1)


Добавление этого в начало моего файла js, похоже, решило мою проблему.

var Audio = function() {
    return {
        load: function() {},
        play: function() {}
    }
}

Источник

person KBouldin9    schedule 18.11.2016
comment
Полтергейст использует PhantomJS в качестве своего браузера. Поскольку PhantomJS не поддерживает аудио/видео, вы не можете протестировать воспроизведение аудио/видео — то, что вы сделали, не делает никаких заглушек для аудиоэлементов. Вместо того, чтобы добавлять его в свои приложения JS, вам лучше поместить его в отдельный файл JS, используемый только для тестирования, и использовать параметр Poltergeist :extensions для его загрузки - github.com/teampoltergeist/poltergeist#customization — см. также: collectiveidea.com/blog/archives/2014/01/21/ - person Thomas Walpole; 18.11.2016