2012-05-17 78 views
0

我公司嘲笑的HttpContext都有自己的SDK包含以下類:如何使用起訂量

public class SharePointContext(System.Web.HttpContext context) 
{ 

} 

如何使用最小起訂量來嘲笑的參數傳遞的HttpContext?來自互聯網的示例使用HttpContextBase,顯然它會拋出一個錯誤,因爲你不能指定一個抽象類的具體類。

有什麼想法?

回答

0

對於最新的Moq,這樣的應該工作。似乎Moq需要一個抽象類或接口,或者至少一個沒有密封的類。所有這些使得難以嘲笑HttpContext

//class that returns all the mock objects you need.. 
public static class MockHelpers 
{ 
    public static HttpContextBase GetFakeContext() 
    { 
     var context = new Mock<HttpContextBase>(); 
     //we need these for our context 
     var request = new Mock<HttpRequestBase>(); 
     var response = new Mock<HttpResponseBase>(); 
     var session = new Mock<HttpSessionStateBase>(); 
     var server = new Mock<HttpServerUtilityBase>(); 


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

     return context.Object; 
    } 
} 

然後你使用這樣的:

public class SharePointContext(MockHelpers.GetFakeContext()); 
+0

隊友..我說我已經嘗試了相同的方法,你給。它抱怨無法將HttpContextBase分配給HttpContext – user384080

+0

@ user384080更新了我的答案,看看是否有效。 – gideon

+0

@gideon .. HttpContext是具體的類。你不能嘲笑具體的課程。你只能嘲笑抽象或接口類。 – user384080