Используя AngularJS, я пытаюсь выполнить unit test функцию, которая делает несколько вызовов $http.
Мой тест выглядит примерно так:
it('traverses over a hierarchical structure over multiple chained calls', function() {
    myService.traverseTheStuff()
    .then(function(theAggregateResult) {
        // ...is never fulfilled
    });
    $httpBackend.flush();
});
Другие тесты с одним вызовом будут регистрировать обратный вызов, переданный в .then(), и выполнить его, как только я вызову .flush().
Тестирование кода выглядит примерно так.
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(...);
    });
}
Для чего стоит, каждый из отдельных вызовов отдельно тестируется. Здесь я хочу пересечь дерево, объединить некоторые данные и unit test a), чтобы цепочка обещаний была подключена правильно, и б) агрегация является точной. Сжатие его в отдельные дискретные вызовы уже сделано.