2013-02-20 3 views
2

이 오류 메시지가 표시되지 않고 새로운 Microsoft Fake Framework로 AccountController에서 로그 오프, 로그인, 등록 작업을 테스트 할 수 없습니다. System.Security.VerificationException : 작업이 런타임을 불안정하게 만들 수 있음 .단위 테스트 Microsoft Fake Framework MVC4가 포함 된 WebMatrix.WebData

[TestMethod] 
    public void LogOff() 
    { 
     var AccountController = new AccountController(); 
     RedirectToRouteResult RedirectToRouteResult; 

     //Scope the detours we're creating 
     using (ShimsContext.Create()) 
     { 
      ShimWebSecurity.Logout =() => { }; 
      var test = AccountController.LogOff(); 
      RedirectToRouteResult = AccountController.LogOff() as RedirectToRouteResult; 
     } 

     Assert.IsNotNull(RedirectToRouteResult); 
     Assert.AreEqual("Index", RedirectToRouteResult.RouteValues["Action"]); 
     Assert.AreEqual("Home", RedirectToRouteResult.RouteValues["controller"]); 
    } 

는 또한이를 찾습니다 : 같은 버그하지만 대답에 대해 이야기 http://social.msdn.microsoft.com/Forums/en-US/vsunittest/thread/f84962ea-a9b2-4e0d-873b-e3cf8cfb37e2

단위 테스트는 실제 간단합니다.

감사합니다.

답변

1

VS2012 업데이트 1이 출시되기 전에 (VerificationException when instantiating MVC controller during unit testing) 나는 같은 질문을하고 Microsoft에서 일하는 사람들이 응답했으며 다음 업데이트에서 사용할 수 있어야합니다. 그 이후로는 아무것도 없습니다.

그러나, 순서 결과를 얻을 수 및 Microsoft 페이크 프레임 워크를 사용하여 테스트를 계속하기에, 나는 string 후 심 장치와 같은 원시적 인 형태를 돌려 내 자신의 개인 방법과 UrlHelper 클래스의 것과 같은 MVC 방법에 대한 호출을 포장 테스트를 통해 원하는 결과를 얻을 수 있습니다. 그런 식으로 기본 MVC 인프라를 직접 호출하지 않고 원하는 결과를 얻었습니다. 또한 System.Web.Mvc.Fakes 참조를 제거해야합니다. 그렇지 않으면 VerificationException이 계속 팝업됩니다.

지루한 경우에는 Moq 또는 Rhino와 같은보다 성숙한 단위 테스트 프레임 워크로 전환해야합니다.

+0

업데이트 2, 같은 오류. Microsoft는 내 런타임을 불안정하게합니다. – felickz

+0

@felickz 업데이트 2를 테스트 한 결과 제대로 작동했습니다. 나는 며칠 전에 업데이트 2를 설치했고, 내가 한 발 맞힐 수도 있다고 생각했다. VerificationExceptions이 없습니다. –

+0

미친 나는 사용하고 있던 컴퓨터에 업데이트 2를 설치하지 않았다. 너무 많은 dev 컴퓨터 :) – felickz

관련 문제