Die Geltendmachung einer spezifischen stub-Aufruf erfolgte mit den erforderlichen Argumenten über sinon

Angenommen, Sie testen eine Funktion aufrufen, werden eine Abhängigkeit, die mehrmals mit verschiedenen Argumenten:

var sut = {
    ImportantFunction: function(dependency){
        dependency("a", 1);
        dependency("b", 2);
    }
};

Verwendung von QUnit + Sinon und vorausgesetzt, dass die Reihenfolge der Aufrufe ist nicht wichtig, ich könnte schreiben, der folgende test stellt sicher, dass die Funktion fordert, die Abhängigkeit als erwartet:

test("dependency was called as expected", function () {
    var dependencyStub = sinon.stub();

    sut.ImportantFunction(dependencyStub);

    ok(dependencyStub.calledTwice, "dependency was called twice");            
    sinon.assert.calledWith(dependencyStub, "a", 1);
    sinon.assert.calledWith(dependencyStub, "b", 2);
});

Aber was ist, wenn die Reihenfolge wichtig ist und ich möchte den test zu berücksichtigen? Was ist die beste Art und Weise zu schreiben, wie ein test mit QUnit+Sinon?

Habe ich verwendet den folgenden Ansatz, aber ich verliere die beschreibende Fehlermeldung, bereitgestellt durch sinon Behauptungen (zeigt den erwarteten und tatsächlichen Werte). Für diese habe ich gerade manuell Hinzugefügt einige aussagekräftige Nachricht, aber es ist nicht so nützlich, wie eine Fehler-Meldung mit der erwarteten und tatsächlichen Werte (und muss manuell verwaltet werden).

ok(dependencyStub.firstCall.calledWith("a", 1), "dependency called with expected args 'a', 1");
ok(dependencyStub.secondCall.calledWith("b", 2), "dependency called with expected args 'b', 2");

Gibt es eine Möglichkeit, eine Behauptung wie sinon.assert.calledWith für einen bestimmten Anruf, wie der erste oder zweite Anruf?

Beispiel-setup in diese Geige

InformationsquelleAutor Daniel J.G. | 2015-04-27
Schreibe einen Kommentar