Wie teste ich, ob ein Sound abgespielt wird?

Ich habe versucht zu decken<audio> Tag durch automatisierte Tests, um zu beginnen, nur um zu bestätigen, dass es abgespielt wird.

Ich benutze die übliche Winkeltestsuite, Karma und Winkelmesser.

"devDependencies": {
    "karma": "~0.10",
    "protractor": "~0.20.1",
    "http-server": "^0.6.1",
    "bower": "^1.3.1",
    "shelljs": "^0.2.6",
    "karma-junit-reporter": "^0.2.2",
    "grunt": "~0.4.1",
    "grunt-contrib-uglify": "~0.2.0",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-watch": "~0.4.3"
}

uf der Karma-Seite ist das Problem, dass ich keine Möglichkeit gefunden habe, Ressourcen hinzuzufügen, die möglicherweise in den Tests verwendet werden, sodass dort keine Datei abgespielt werden kann. Wenn es einen Weg gäbe, auf eine Datei zu zeigen, sollte dies kein Problem sein, da ich einfach das @ überprüfen könntpaused Eigenschaft des Elements.

uf der 2e2-Seite gibt es eine Demo-App, die perfekt funktioniert. Der Test kann sie problemlos laden, und wenn Sie auf eine der Schaltflächen klicken, werden keine Fehler generiert (wenn Sie es manuell versuchen, wird der Ton ausgelöst). Wenn ich jedoch in die Winkelmesser-API schaue, kann ich nichts finden, das es mir ermöglicht, sicherzustellen, dass der Sound tatsächlich abgespielt wird, oder auf das Element als gerade @ zugreifedocument undangular sind hier nicht verfügbar (was als 2e2-Test sinnvoll ist) oder nur eine API zum Überprüfen der Elementeigenschaften.

beforeEach(function() {
    browser.get("index.html")
});

it("Ensure the player is playing", function () {

    $("button").first().click();

    // what to do?

});

Ich habe darüber nachgedacht, die Audio-API zu verspotten und einfach die zu aktualisierenden Eigenschaften zu fälschen, aber dann teste ich immer noch mit meinem Code und demcurrentTime wäre sehr schwer zu verspotten, wenn mein Endziel darin besteht, einen Sound auf einem Audio-Sprite zu testen, der erwartungsgemäß gestartet und gestoppt wird.

Idealerweise möchte ich das in Unit-Tests behandeln, wo es sein sollte. Daher wäre es ideal, eine funktionierende Ressource verwenden zu können. So dass ein einfachesexpect(!element[0].paused).toEqual(true); Will genug, um zu wissen, dass es spielt.

Wie kann ich eine Datei in meinen Unit-Tests als Audioquelle bereitstellen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage