0

我公司有自己的 SDK,其中包含以下类:

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

}

如何使用 Moq 模拟要传入参数的 HttpContext?来自互联网的示例使用 HttpContextBase 显然它会引发错误,因为您不能为具体类分配抽象类。

有任何想法吗?

4

1 回答 1

0

对于最新的起订量,这样的东西应该可以工作。似乎 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());
于 2012-05-17T05:28:35.833 回答