Код на основе обещаний модульного теста в Angularjs

Я испытываю трудности с тестированием кода на основе обещаний в Angularjs.

У меня есть следующий код в моем контроллере: I '

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

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

Я бы хотел провести юнит-тестирование в следующих случаях:

когдаmarkAsDone называется это должно позвонитьtasksService.removeAndGetNextкогдаtasksService.removeAndGetNext сделано, это должно изменить местоположение (вызвать)goTo

Мне кажется, что нет простого способа проверить эти два случая отдельно.

Что я сделал, чтобы проверить первый:

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

Теперь, чтобы протестировать второй случай, мне нужно создать еще одно поддельное обещание, которое будет всегдаresolved, Это'все довольно утомительно, и этоs много шаблонного кода.

Есть ли другой способ проверить такие вещи? Или мой дизайн пахнет?

Ответы на вопрос(3)

Ваш ответ на вопрос