0

私の会社には、次のクラスを含む独自の SDK があります。

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

}

Moqを使用してHttpContextをモックして引数に渡すにはどうすればよいですか? HttpContextBase を使用したインターネットからのサンプル。具体的なクラスを抽象クラスに割り当てることができないため、明らかにエラーがスローされます。

何か案は?

4

1 に答える 1

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());
于 2012-05-17T05:28:35.833 に答える