Kod oparty na obietnicy testu jednostkowego w Angularjs

Trudno mi jest próbować przetestować kod oparty na obietnicach w Angularjs.

W kontrolerze mam następujący kod:

    $scope.markAsDone = function(taskId) {
        tasksService.removeAndGetNext(taskId).then(function(nextTask) {
            goTo(nextTask);
        })
    };

    function goTo(nextTask) {
        $location.path(...);
    }

Chciałbym przeprowadzić test jednostkowy następujących przypadków:

gdymarkAsDone nazywa się to powinno zadzwonićtasksService.removeAndGetNextgdytasksService.removeAndGetNext zrobione powinno zmienić lokalizację (wywołaniegoTo)

Wydaje mi się, że nie ma łatwego sposobu na osobne przetestowanie tych dwóch przypadków.

To, co zrobiłem, aby przetestować pierwszy, to:

var noopPromise= {then: function() {}}
spyOn(tasksService, 'removeAndGetNext').andReturn(noopPromise);

Teraz, aby przetestować drugi przypadek, muszę stworzyć kolejną fałszywą obietnicę, która byłaby zawszeresolved. Wszystko to jest dość żmudne i zawiera wiele podstawowych kodów.

Czy jest jakiś inny sposób na przetestowanie takich rzeczy? Czy mój projekt pachnie?

questionAnswers(3)

yourAnswerToTheQuestion