Comment Construire IdentityResult Avec Succès == true
J'ai une classe avec Microsoft.AspNet.L'identité.UserManager injecté, et je veux attendre le userManager.CreateAsync(utilisateur, mot de passe) méthode pour renvoyer une Tâche où la IdentityResult.Réussi = true. Cependant, les seuls constructeurs pour IdentityResult sont les cas les constructeurs qui vont entraîner Réussi bien être faux.
Comment créer un IdentityResult qui a Réussi == true? IdentityResult ne pas implémenter une interface et Réussi n'est pas virtuel, donc je ne vois pas de manière évidente de créer un objet fantaisie à travers Rhino se moque (que je suis en utilisant comme mon se moquant de cadre).
Ma méthode fait quelque chose comme ci-dessous. Fournir cet exemple pour montrer pourquoi je puisse avoir envie de se moquer de ce.
public async Task<IdentityResult> RegisterUser(NewUser newUser)
{
ApplicationUser newApplicationUser = new ApplicationUser()
{
UserName = newUser.UserName,
Email = newUser.Email
};
IdentityResult identityResult = await applicationUserManager.CreateAsync(newApplicationUser, newUser.Password);
if(identityResult.Succeeded)
{
someOtherDependency.DoSomethingAmazing();
}
return identityResult;
}
Je suis en train d'écrire un test unitaire qui assure que someOtherDependency.DoSomethingAmazing() est appelée si identityResult.Réussi est vrai. Merci pour toute aide!
- Sonne comme un cas pour un décorateur (en.wikipedia.org/wiki/Decorator_pattern).
- Ouais j'ai été vraiment essayer de réserve que comme un dernier recours. Il y a un certain nombre de méthodes qui retournent des IdentityResult de sorte qu'il serait difficile pour envelopper tous ces.... mais je peut juste.
- Comme @jaytre mentionné, l'utilisation de la var result = IdentityResult.Le succès va vous donner une IdentityResult objet ayant Réussi = true
Vous devez vous connecter pour publier un commentaire.
Serait la statique IdentityResult.Le succès de biens de travail? http://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityresult.success(v=vs. 108).aspx
Modifier:
Pour ajouter un peu plus en détail, il semble que ce que vous voulez faire est d'obtenir votre moqué CreateAsync de retour d'un IdentityResult où Parvenus est vrai. Pour cela, je voudrais juste revenir IdentityResult.La réussite de votre maquette. Il ne devrait pas être un besoin de se moquer de l'IdentityResult lui-même.
IdentityResult
qui a échoué?return new IdentityResult("FAILED");
le ferais... docs.microsoft.com/en-us/previous-versions/aspnet/...Pour faire de la Réussi à la propriété est égal à True utiliser l'un de ces exemples:
De plus, pour assurer le Succès de propriété renvoie la valeur true
Puis dans la mise en œuvre de votre code, appelez la mise en œuvre de la méthode comme ceci
Dans mon exemple, j'ai raillé
IdentityResult.Success
manière suivante:D'abord, IdentityResult a protégé constructeur:
Protégé constructeur peut être consulté à partir de héritées de la classe si vous mettez en œuvre comme ceci:
Seconde, dans mon unité de test, j'ai configuré
ResetPasswordAsync()
de retour identityResult comme ci-dessous::Troisième, dans mon action de contrôleur
ResetPasswordAsync()
retourne résultat avecSuccessed == true
:Fondamentalement, j'ai mis en place une nouvelle classe qui a hérité d'IdentityResult et utilisé que dans mon cas de test.
Si vous avez besoin d'un succès IdentityResult puis tout ce que vous devez faire est de téléphoner à la Réussite de la propriété. Cela vous donnera un succès IdentityResult.
https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityresult(v=vs. 108).aspx