Mam ciężkie czasy próbować przetestować oparty na obietnicach kod w Angularjs.Kod oparty na testach jednostkowych w Angularjs
Mam następujący kod w moim kontrolera:
$scope.markAsDone = function(taskId) {
tasksService.removeAndGetNext(taskId).then(function(nextTask) {
goTo(nextTask);
})
};
function goTo(nextTask) {
$location.path(...);
}
Chciałbym jednostka test następujące przypadki:
- gdy
markAsDone
nazywa powinien zadzwonićtasksService.removeAndGetNext
- kiedy
tasksService.removeAndGetNext
wykonano, należy zmienić lokalizację (wywołaćgoTo
)
Wydaje mi się, że nie ma łatwego sposobu na sprawdzenie tych dwóch przypadków oddzielnie.
Co zrobiłem, aby przetestować pierwszy był:
var noopPromise= {then: function() {}}
spyOn(tasksService, 'removeAndGetNext').andReturn(noopPromise);
teraz przetestować drugi przypadek trzeba utworzyć kolejną fałszywą obietnicę, że zawsze będzie resolved
. To wszystko dość uciążliwe i jest dużo kodu standardowego.
Czy istnieje inny sposób sprawdzenia takich rzeczy? A może mój zapach ma zapach?
Przyjęte rozwiązanie nie działa dla mnie. To zrobiło: http://stackoverflow.com/questions/21895684/how-do-i-unit-test-an-angularjs-controller-that-relies-on-a-romrom?rq=1 – sibidiba