2011-03-11 8 views
1

저는 MVC (2 일만에 처음)에 익숙 합니다만, RedirectToAction으로 연결된 컨트롤러 호출 체인 전체에 대한 테스트를 작성하는 방법이 있습니까? 즉, 각각의 호출을 수동으로 코딩하지 않고 차례로 전체 호출 시퀀스를 테스트한다.RedirectToAction에 의해 링크 된 전체 컨트롤러 호출 체인을 테스트하려면 어떻게합니까?

의 라인을 따라 egsomething : 그래서

MyTestMethod() 
{ 

    var myController = new MyController(someparam1); 

    ActionResult action = myController.DoSomething(); 

    RedirectToAction ar = action as RedirectToAction; 

    // loop while the ActionResult is an RedirectToAction 
    while (ar!=null) 
    { 
    // automatically make direct call to next redirect method in 
    // chain, is something like this possible? 
    action = ar.NextMethodToCall(ar.NextMethodToCallParam1, ar.NextMethodToCallParam2); 

    ar = action as RedirectToAction; 
    } 

} 

은 명확하게하기 위해,이 오히려 단위 (단일 컨트롤러 방법은 올바른 actionresult을 반환 만 테스트 것) 테스트,하지만 아닙니다 전체 리다이렉트 체인의 테스트.

주 - 테스트 방법 일 뿐이므로 MVC 앱은 호출 될 때 실행되지 않습니다. IIS는 테스트 컴퓨터에도 설치되지 않습니다.

답변

1

NextMethodToCall() 메서드에서 일부 로깅/테스트 논리를 적용 할 수 있습니다.

+0

나는 그 답을 이해하지 못한다. 아마도 내 질문은 분명하지 않을 수 있습니다. NextMethodToCall()은 실제로 명명 된 메서드로 존재하지 않지만 코드는 RedirectToAction 속성을 검토하여 RedirectToAction 객체를 사용하여 "nextmethodtocall"을 동적으로 결정합니다. 질문의 핵심은 - 호출 할 다음 메소드를 동적으로 결정하고 런타임에 ActionResult/RedirectToAction 객체를 사용하여 해당 메소드의 매개 변수를 채우는 방법은 무엇입니까? 테스트를 수용하기 위해 코드를 변경하고 싶지 않으므로 실제 출시 코드의 변경은 배제해야합니다. – jimasp

+0

@jimasp, ActionResult (또는 RedirectToRouteResult)를 서브 클래스 화하고 사용자 정의 로직을 추가 할 수 있습니다. – smartcaveman

+0

조금만 더 읽고 나면, 다른 접근법이 필요하다는 것을 깨달았습니다. – jimasp

관련 문제