私の会社には、次のクラスを含む独自の SDK があります。
public class SharePointContext(System.Web.HttpContext context)
{
}
Moqを使用してHttpContextをモックして引数に渡すにはどうすればよいですか? HttpContextBase を使用したインターネットからのサンプル。具体的なクラスを抽象クラスに割り当てることができないため、明らかにエラーがスローされます。
何か案は?
最新の 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());