2015-01-09 2 views
7

Я знаю, что есть много других подобных вопросов, однако ответы не дают возможности обойти эту проблему.Безголовый JavaScript Тестирование HTML5 аудио/видео

У меня есть файл JavaScript, который используется на моем веб-сайте, который использует HTML 5 Web Audio и хочет его протестировать.

Я посмотрел на использование QUnit с PhantomJS и, прежде чем сказать что-нибудь, я знаю , что Phantom не поддерживает его (http://phantomjs.org/supported-web-standards.html), однако, я хочу знать, если есть способ обойти это?

Тестирование его с помощью QUnit в браузере работает так, как вы ожидали, но я не хочу тестировать его с помощью браузера каждый раз, я хочу, чтобы он был автоматизирован на сервере.

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

QUnit.test("isPlaying", function(assert){ 

    // true case 
    My.Sound.play("background"); 
    assert.ok(My.Sound.isPlaying("background"), "The background audio is playing"); 

    // false case 
    My.Sound.pause("background"); 
    assert.ok(!My.Sound.isPlaying("background"), "The background audio is not playing"); 
}); 
+1

Я не знаю, работает ли QUnit с SlimerJS, но если это возможно, вы можете сделать это с помощью SlimerJS + xvfb. –

+2

Вы всегда можете издеваться над всем API веб-аудио ... но, похоже, это излишний. Те, что вы тестируете здесь, - это HTML5 Web Audio, а не ваш собственный код. – jakerella

+0

Связано для автоматического тестирования с SlimerJS и xvfb: https://askubuntu.com/questions/430247/which-packages-should-be-installed-on-ubuntu-server-so-it-will-be-able-to- играть-v/430251 # 430251 –

ответ

0

Как @jakerella уже отмечалось, это не имеет никакого смысла тестировать интерфейсы третьих лиц. Просто сосредоточьтесь на своей функциональности. В этом случае вы должны проверить, что всякий раз, когда вы хотите воспроизвести/приостановить звук, вы вызываете правильные методы api для вашего звукового объекта (play/pause), которые должны быть заглушками исходных реализаций.

QUnit.test("play button should play sound when clicked", (assert) => { 
    const button = someButton; //...get your button/play trigger here 
    const playStub = stub(My.Sound, 'play'); 

    //trigger button click 

    assert.ok(playStub.called); 
}); 

Посмотрите here для гася функциональность с QUnit.