2015-01-09 13 views
7

Ich weiß, dass es viele andere ähnliche Fragen gibt, aber die Antworten bieten keine Möglichkeit, dieses Problem zu umgehen.Headless JavaScript Testing HTML5 Audio/Video

Ich habe eine JavaScript-Datei auf meiner Website verwendet, die die HTML 5 Web Audio verwendet und Einheit testen möchte.

ich mit QUnit mit PhantomJS ausgesehen haben und bevor Sie sagen, alles, was ich wissen das Phantom nicht unterstützt (http://phantomjs.org/supported-web-standards.html) jedoch möchte ich wissen, ob es einen Weg, um dieses ist?

Das Testen mit QUnit im Browser funktioniert wie erwartet, aber ich möchte es nicht jedes Mal mit dem Browser testen, ich möchte, dass es auf dem Server automatisiert wird.

Ein Beispiel für einen der Tests, die fehlschlägt:

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

Ich weiß nicht, ob QUnit mit SlimerJS läuft, aber wenn es das ist, können Sie dies mit SlimerJS + xvfb tun –

+2

Sie können immer die gesamte Web Audio API verspotten ... aber scheint wie Overkill. Was Sie hier testen, ist HTML5 Web Audio, nicht Ihr eigener Code. – jakerella

+0

Verwandte für automatisierte Tests mit SlimerJS und xvfb: https://askubuntu.com/questions/430247/which-packages-should-be-installed-on-ubuntu-server-so-it-will-be-able-to-- Spiel-v/430251 # 430251 –

Antwort

0

Wie @jakerella bereits erwähnt, macht es keinen Sinn Dritten apis zu testen. Konzentriere dich einfach auf deine Funktionalität. In diesem Fall sollten Sie testen, wann immer Sie einen Sound abspielen/pausieren möchten, rufen Sie die korrekten API-Methoden für Ihr Soundobjekt auf (play/pause), die Stubs der ursprünglichen Implementierungen sein sollten.

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); 
}); 

Werfen Sie einen Blick here für Funktionalität mit QUnit Anstoßen.