2012-05-01 94 views
0

我正在使用hanselman tutorial來使用Moq爲以httpcontext作爲輸入參數的方法創建單元測試。使用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」和沒有擴展方法「SetupRequestUrl」接受類型爲「System.Web.HttpRequestBase」第一自變量的定義可以發現(你缺少使用指令或組件參考?)

請幫忙。

我想找到一個非常簡單的易於遵循教程設置httpcontext請求對象並傳入具有上下文輸入參數的方法,並且能夠創建單元測試,但所有在谷歌中的示例都不工作或複雜。請幫忙。

回答

3

確保已宣佈as shown by the HaackedMvcMockHelpers類中的SetupRequestUrl擴展方法:

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

你應該有複製粘貼從文章的整個代碼片段。

+0

達林,它在哪裏顯示..我用谷歌搜索它 –

+2

你在谷歌搜索什麼?哈克德在他的博客文章中展示了這種方法。只需Ctrl + F查看'SetupRequestUrl'就可以在他的文章中找到它。 –

+0

達林,迄今爲止很好..謝謝 –