문제

따라서 컨트롤러 컨텍스트는 일부 asp.net 내부에 의존합니다.단위 테스트를 위해 이것을 깔끔하게 모의하는 방법은 무엇입니까?예를 들어 Request.HttpMethod가 "GET"을 반환 할 때만 필요한 경우 수많은 설정으로 테스트를 막는 것은 매우 쉬운 것 같습니다.

넷에서 몇 가지 예 / 도우미를 보았지만 일부는 구식입니다.이 곳이 최신 정보를 유지하기에 좋은 장소라고 생각했습니다.

최신 버전의 코뿔소 모의를 사용하고 있습니다

도움이 되었습니까?

해결책

MoQ를 사용하면 다음과 같이 보입니다. 라코 디스

Rhino Mocks 구문이 비슷하다고 생각합니다.

다른 팁

다음은 HttpRequest 및 HttpResponse 개체를 모방하는 MsTest 및 Moq를 사용하는 샘플 단위 테스트 클래스입니다.(.NET 4.0, ASP.NET MVC 3.0)

컨트롤러 액션은 요청에서 값을 얻고 응답 객체에 http 헤더를 설정합니다.다른 http 컨텍스트 객체도 비슷한 방식으로 모의 할 수 있습니다. 라코 디스

다음은 Jason의 링크에서 발췌 한 것입니다.Phil의 방법과 동일하지만 rhino를 사용합니다.

참고 : mockHttpContext.Request는 mockRequest의 내부가 스텁 처리되기 전에 mockRequest를 반환하도록 스텁 처리됩니다.이 주문이 필요하다고 생각합니다. 라코 디스

이 절차는 MVC2에서 약간 변경된 것 같습니다 (저는 RC1을 사용하고 있습니다).작업에 특정 방법 ([HttpPost], [HttpGet])이 필요한 경우 Phil Haack의 솔루션이 작동하지 않습니다.Reflector를 둘러 보면 이러한 속성을 확인하는 방법이 변경된 것 같습니다.MVC는 이제 request.Headers, request.Form, request.QueryString에서 X-HTTP-Method-Override 값을 확인합니다.

이러한 속성에 대한 모의를 추가하면 작동합니다. 라코 디스

또는 가짜 컨트롤러를 전혀 보낼 필요없이 Typemock Isolator로이 작업을 수행 할 수 있습니다. 라코 디스

이 사양 완료 라코 디스

주스가 여기 있습니다 라코 디스

즐기세요

긴 조롱 절차가 마찰이 너무 많다는 것을 알았습니다.

실제 프로젝트에서 ASP.NET MVC를 사용하는 가장 좋은 방법은 단순히 통과하는 IWebContext 인터페이스로 HttpContext를 추상화하는 것입니다.그런 다음 고통없이 IWebContext를 조롱 할 수 있습니다.

다음은

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top