Je vais avoir des moments difficiles en train de tester, promesse code Angulaire.
J'ai le code suivant dans mon controller:
$scope.markAsDone = function(taskId) {
tasksService.removeAndGetNext(taskId).then(function(nextTask) {
goTo(nextTask);
})
};
function goTo(nextTask) {
$location.path(...);
}
J'aimerais unité de tester les cas suivants:
- lors de l'
markAsDone
est appelée, elle doit appelertasksService.removeAndGetNext
- lors de l'
tasksService.removeAndGetNext
est fait, il devrait changer d'emplacement (invokegoTo
)
Il me semble qu'il n'y a pas de moyen facile de tester ces deux cas séparément.
Ce que j'ai fait pour tester le premier était:
var noopPromise= {then: function() {}}
spyOn(tasksService, 'removeAndGetNext').andReturn(noopPromise);
Maintenant pour tester deuxième cas, j'ai besoin de créer un autre faux promesse qui serait toujours resolved
. C'est assez fastidieux et c'est beaucoup de code réutilisable.
Est-il un autre moyen de tester de telles choses? Ou est-ce que mon design odeur?