À l'aide de Rhino se moque de se moquer un paramètre de sortie, qui est créé à l'intérieur de la méthode que je suis en train de tester
Essayer de se moquer de la méthode suivante:
bool IsLoginValid(LoginViewModel viewModel, out User user);
Essayé ceci d'abord:
dependency<ILoginService>()
.Stub(serv =>
serv.IsLoginValid(
Arg<LoginViewModel>.Is.Equal(a_login_viewmodel),
out Arg<User>.Is.Anything)
.Return(false);
Mais qui échoue, c'est un paramètre de sortie. Fait un peu de recherche autour de et modifié mon code comme tel:
dependency<ILoginService>()
.Stub(serv =>
serv.IsLoginValid(
Arg<LoginViewModel>.Is.Equal(a_login_viewmodel),
out Arg<User>.Out(new User()).Dummy))
.Return(false);
Qui échoue également. J'ai besoin de " new User()' pour être une sorte de "n'importe Quoi" argument. Comme je pense que s'attend à une instance spécifique.
Une idée de comment contourner ce problème? Merci les gars.
- Quelle erreur obtenez-vous dans le dernier cas? Il semble correct...
Vous devez vous connecter pour publier un commentaire.
Essayer de la "OutRef" option. Il accepte un params object[] qui définit le résultat pour chaque paramètre de sortie. Puisque vous avez seulement un, vous avez seulement besoin d'un résultat. Voici une maquette de ce que j'ai essayé qui devrait fonctionner dans votre situation:
La modification de la accepté de répondre (par @Patrick Steele) pour faire correspondre les noms de variables et les espaces dans la question:
...puis en modifiant la syntaxe (mais pas la sémantique) à la fluidité de la
Args
syntaxe:...puis nous nous retrouvons avec exactement la même syntaxe que les OP de la deuxième tentative, qui, apparemment, "échoue". Personnellement, je préfère le fluent 'Args' style, même si il est un peu plus prolixe.
TL;DR les OP de la deuxième tentative est sémantiquement équivalent à la accepté de répondre, simplement utilise une syntaxe différente.