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.removeAndGetNext
gdytasksService.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?