Je suis en train de migrer de Rx 1 à Rx 2 et tout à coup, en lisant les messages, j'ai découvert que Single devrait être le type d'observable à utiliser pour les appels de mise à niveau.
J'ai donc décidé de tenter le coup et lors de la migration de nos appels de mise à niveau vers Rx 2, j'ai également changé la valeur de retour en Single<whatever>
.
Maintenant, le problème est que certains de nos tests se moquent des services réseau de manière similaire à:
when(userService.logout()).thenReturn(Observable.empty())
Comme vous pouvez le voir avant de migrer les appels, nous avons utilisé pour terminer simplement le flux en disant à la maquette userService
de retourner un observable vide.
Lors de la migration vers la Single
"version" des appels, nous ne pouvons plus utiliser Observable.empty()
car l'appel ne renvoie pas de Observable
, mais renvoie un Single
.
J'ai fini par faire quelque chose comme:
when(userService.logout()).thenReturn(
Single.fromObservable(Observable.<whatever>empty()))
Mes questions sont:
Single.empty()
n'a aucun sens car Single
doit avoir un seul élément ou une erreur. Vous auriez pu simplement conserver Observable
ou basculer sur Maybe
qui autorise vide ou Completable
qui n'émet aucun élément.
Une solution de contournement, par exemple pour les tests serait
Observable.<Whatever>empty().toSingle()
gardez à l'esprit que cela n'appelle pas du tout les abonnés.