Код на основе обещаний модульного теста в 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 много шаблонного кода.
Есть ли другой способ проверить такие вещи? Или мой дизайн пахнет?