2010-05-26 2 views
2

나는 다음과 같은 라인 변경 :MVC 2에서 사용자 변경 MockHttpContext가 Test를 중단합니까?

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

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

로하고 다음과 같은 시험은 부러졌지만, 나는 왜 확실하지 않다 나는 그것을 추적하는 방법을 잘 모르겠습니다. 나는

[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"]); 
    } 

이 작동하고 위의 테스트를 끊을 realUser에 결과 someuser을 변경하는 이유를하는 것은 매우 도움이 될 것입니다 방법에 대한 설명을 TDD에 새로운 오전.

+0

구체적으로 무엇이 고장 났습니까? 테스트에서 오류가 발생했거나 실패한 것이 실패 했습니까? 또한 암호 변경 작업이 기본 제공 암호 작업과 동일합니까? –

+0

이 어설 션이 실패했습니다. Assert.IsInstanceOfType가 실패했습니다. 예상되는 형식 : . 실제 유형 : . 암호 변경 작업은 기본적으로 제공되는 것입니다. 내가 변경 한 유일한 것은 문자열 "someUser"에서 "realUser" – Xaisoft

답변

0

이것은 로그인에 실패했음을 나타냅니다. controller.ChangePassword(model);을 통해 테스트 및 추적을 디버깅하여이를 확인할 수 있습니다. 인증과 관련된 모든 작업을 테스트하려면 멤버 자격 공급자를 조롱하거나 교체해야합니다.

관련 문제