我公司有自己的 SDK,其中包含以下类:
public class SharePointContext(System.Web.HttpContext context)
{
}
如何使用 Moq 模拟要传入参数的 HttpContext?来自互联网的示例使用 HttpContextBase 显然它会引发错误,因为您不能为具体类分配抽象类。
有任何想法吗?
对于最新的起订量,这样的东西应该可以工作。似乎 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());