У меня тяжелые времена пытаются проверить код на основе обещаний в Angularjs.
В моем контроллере есть следующий код:
$scope.markAsDone = function(taskId) {
tasksService.removeAndGetNext(taskId).then(function(nextTask) {
goTo(nextTask);
})
};
function goTo(nextTask) {
$location.path(...);
}
Я хотел бы выполнить тестирование следующих случаев:
- Когда
markAsDone
вызывается, он должен вызыватьtasksService.removeAndGetNext
- Когда
tasksService.removeAndGetNext
выполняется, он должен изменить местоположение (invokegoTo
)
Мне кажется, что нет простого способа проверить эти два случая отдельно.
Что я сделал для проверки первого:
var noopPromise= {then: function() {}}
spyOn(tasksService, 'removeAndGetNext').andReturn(noopPromise);
Теперь, чтобы проверить второй случай, мне нужно создать еще одно поддельное обещание, которое всегда было бы resolved
. Все это довольно утомительно, и у него много шаблонов.
Есть ли другой способ проверить такие вещи? Или мой дизайн запах?