Wie unit-Tests eine angularjs Versprechen Kette mit $httpBackend

Verwendung von AngularJS, ich bin versucht, unit-test-eine Funktion, die mehrere Aufrufe von $http.

Mein test sieht wie folgt aus:

it('traverses over a hierarchical structure over multiple chained calls', function() {

    myService.traverseTheStuff()
    .then(function(theAggregateResult) {
        //...is never fulfilled
    });

    $httpBackend.flush();
});

Andere single-call-tests registriert den callback übergeben .dann (), und führen Sie es, sobald ich rufe .flush().

Den code unter test so aussieht.

function traverseTheStuff(){

    //This will make a call to $http to fetch some data
    return getRootData()

    //It is fulfilled at the end of the test when I $httpBackend.flush()
    .then(function(rootData){

        //Another call to $http happens AFTER $httpBackend.flush()
        return getNextLevel(rootData.someReference);
    })

    //The second promise is never fulfilled and the test fails
    .then(function(nextLevel){
        return aggregateTheStuff(...);
    });
}

Für das, was Ihren Wert, jedes einzelne Aufrufe: Einheit separat getestet. Ich möchte hier durchqueren Sie ein Baum -, Aggregat-einige Daten und unit-testen, a) dass die Versprechen, die die Verkettung richtig angeschlossen ist und b) die aggregation ist richtig. Abflachung es aus in separate diskrete Anrufe ist bereits getan.

Schreibe einen Kommentar