2010-05-26 8 views
2

j'ai changé la ligne suivante:Changer d'utilisateur dans MVC 2 MockHttpContext casse le test?

private readonly IPrincipal _user = 
     new GenericPrincipal(new GenericIdentity("someUser"), null /* roles */); 

à

private readonly IPrincipal _user = 
     new GenericPrincipal(new GenericIdentity("realUser"), null /* roles */); 

et le test vainquit, mais je ne sais pas pourquoi et je ne suis pas sûr de savoir comment le tracer. Je suis nouveau à TDD

[TestMethod] 
    public void ChangePassword_Post_ReturnsRedirectOnSuccess() 
    { 
     // Arrange 
     AccountController controller = GetAccountController(); 
     ChangePasswordModel model = new ChangePasswordModel() 
     { 
      OldPassword = "goodOldPassword", 
      NewPassword = "goodNewPassword", 
      ConfirmPassword = "goodNewPassword" 
     }; 

     // Act 
     ActionResult result = controller.ChangePassword(model); 

     // Assert 
     Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); 
     RedirectToRouteResult redirectResult = (RedirectToRouteResult)result; 
     Assert.AreEqual("ChangePasswordSuccess", redirectResult.RouteValues["action"]); 
    } 

Une explication de la façon dont cela fonctionne et pourquoi changer someUser à realUser romprait le test ci-dessus serait très utile.

+0

Qu'est-ce qui s'est cassé spécifiquement? Le test a jeté une erreur, ou quelle affirmation a échoué? En outre, l'action de changement de mot de passe est-elle la même que celle par défaut? –

+0

Cette affirmation a échoué: Assert.IsInstanceOfType a échoué. Type attendu: . Type réel: . L'action Modifier le mot de passe est celle par défaut fournie. La seule chose que j'ai changé était la chaîne "someUser" à "realUser" – Xaisoft

Répondre

0

Ceci suggère que la connexion a échoué. Vous pouvez le confirmer en déboguant le test et en le traçant à controller.ChangePassword(model);. Tester toute action impliquant l'authentification nécessite de se moquer ou de remplacer le fournisseur d'appartenances.