2012-05-01 4 views
0

입력 매개 변수로 httpcontext를 사용하는 메소드의 단위 테스트를 만들기 위해 Moq를 사용하려면 hanselman tutorial을 사용하고 있습니다.moq을 사용하여 httpcontext.request 채우기

public static class MvcMockHelpers 
{ 

    public static HttpContextBase FakeHttpContext() 
    { 
     var context = new Mock<HttpContextBase>(); 
     var request = new Mock<HttpRequestBase>(); 
     var response = new Mock<HttpResponseBase>(); 
     var session = new Mock<HttpSessionStateBase>(); 
     var server = new Mock<HttpServerUtilityBase>(); 

     context.Setup(ctx => ctx.Request).Returns(request.Object); 
     context.Setup(ctx => ctx.Response).Returns(response.Object); 
     context.Setup(ctx => ctx.Session).Returns(session.Object); 
     context.Setup(ctx => ctx.Server).Returns(server.Object); 

     return context.Object; 
    } 

    public static HttpContextBase FakeHttpContext(string url) 
    { 
     var context = FakeHttpContext(); 
     context.Request.SetupRequestUrl(url); <---- error here 
     return context; 
    } 



} 

나는 context.Request.SetupRequestUrl (URL)에 다음과 같은 오류를 얻고있다;

오류 1 'System.Web.HttpRequestBase' 'SetupRequestUrl'과 유형의 'System.Web.HttpRequestBase'첫 번째 인수를 받아들이는없는 확장 메서드 'SetupRequestUrl'에 대한 정의를 포함하지 않는이 볼 수 있습니다 (당신입니다 using 지시문 또는 어셈블리 참조가 누락 되었습니까?)

도움을 받으십시오.

httpcontext 요청 개체를 설정하고 컨텍스트 입력 매개 변수를 사용하여 메서드에 전달하고 단위 테스트를 만들 수있는 매우 간단한 쉬운 튜토리얼을 찾으려고하지만 Google의 모든 예제가 작동하지 않거나 복잡합니다. . 도와주세요.

답변

3

당신이 MvcMockHelpers 클래스 as shown by the Haacked 내부의 SetupRequestUrl 확장 메서드를 선언했는지 확인하십시오 : 당신은 기사 전체의 코드를 복사 - 붙여 넣기해야

public static void SetupRequestUrl(this HttpRequestBase request, string url) 
{ 
    ... 
} 

.

+0

대런, 어디 보여? 나는 그것을 찾고있다. –

+2

인터넷 검색은 무엇입니까? Haacked는 그의 블로그 게시물에이 방법을 보여주었습니다. 그의 기사 안에서 그것을 찾으려면'SetupRequestUrl'을위한 Ctrl + F 만하십시오. –

+0

대린, 지금까지 너무 좋아 .. 감사합니다. –

관련 문제