C# 无法模拟OdataQueryOptions
我需要在使用odata的web api中对控制器进行单元测试 我使用Moq来模拟实体框架。我无法模拟OdataQueryOptions作为参数传递给控制器的操作C# 无法模拟OdataQueryOptions,c#,unit-testing,odata,C#,Unit Testing,Odata,我需要在使用odata的web api中对控制器进行单元测试 我使用Moq来模拟实体框架。我无法模拟OdataQueryOptions作为参数传递给控制器的操作 [TestMethod] public void TestMethod1() { var data = new List<ActivationRequestLog> { new ActivationRequestLog { ActivationReque
[TestMethod]
public void TestMethod1()
{
var data = new List<ActivationRequestLog>
{
new ActivationRequestLog { ActivationRequestLogID=1, SourceTokenType="happy", ProductKeyID=20140265000001, ActivationStatusCode="", AttemptDateOffset=null, HWID="", LogCreatedDateOffset=null },
new ActivationRequestLog { ActivationRequestLogID=1, SourceTokenType="happy", ProductKeyID=20140265000001, ActivationStatusCode="", AttemptDateOffset=null, HWID="", LogCreatedDateOffset=null },
new ActivationRequestLog { ActivationRequestLogID=1, SourceTokenType="happy", ProductKeyID=20140265000001, ActivationStatusCode="", AttemptDateOffset=null, HWID="", LogCreatedDateOffset=null },
}.AsQueryable();
var mockSet = new Mock<DbSet<ActivationRequestLog>>();
mockSet.As<IQueryable<ActivationRequestLog>>().Setup(m => m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<ActivationRequestLog>>().Setup(m => m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<ActivationRequestLog>>().Setup(m => m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<ActivationRequestLog>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext = new Mock<AVSDataAccessViewEntities>();
mockContext.Setup(c => c.ActivationRequestLogs).Returns(mockSet.Object);
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/someurl");
//var opts = new ODataQueryOptions<ActivationRequestLog>(new ODataQueryContext(modelBuilder.GetEdmModel(), typeof(ActivationRequestLog),path), request);
var service = new AVSController(mockContext.Object);
var activationRequestLog = service.GetActivationRequestLog(opts);
Assert.AreEqual(2, activationRequestLog.Count());
}
}
[TestMethod]
公共void TestMethod1()
{
var数据=新列表
{
新的ActivationRequestLog{ActivationRequestLogID=1,SourceTokenType=“happy”,ProductKeyID=20140265000001,ActivationStatusCode=“”,AttemptDateOffset=null,HWID=“”,LogCreatedDateOffset=null},
新的ActivationRequestLog{ActivationRequestLogID=1,SourceTokenType=“happy”,ProductKeyID=20140265000001,ActivationStatusCode=“”,AttemptDateOffset=null,HWID=“”,LogCreatedDateOffset=null},
新的ActivationRequestLog{ActivationRequestLogID=1,SourceTokenType=“happy”,ProductKeyID=20140265000001,ActivationStatusCode=“”,AttemptDateOffset=null,HWID=“”,LogCreatedDateOffset=null},
}.AsQueryable();
var mockSet=new Mock();
mockSet.As().Setup(m=>m.Provider).返回(data.Provider);
mockSet.As().Setup(m=>m.Expression).Returns(data.Expression);
mockSet.As().Setup(m=>m.ElementType).Returns(data.ElementType);
mockSet.As().Setup(m=>m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext=new Mock();
Setup(c=>c.ActivationRequestLogs).Returns(mockSet.Object);
var request=newhttprequestmessage(HttpMethod.Get)http://localhost/someurl");
//var opts=新的ODataQueryOptions(新的ODataQueryContext(modelBuilder.GetEdmModel(),typeof(ActivationRequestLog),path),request);
var服务=新的AVSController(mockContext.Object);
var activationRequestLog=service.GetActivationRequestLog(opts);
AreEqual(2,activationRequestLog.Count());
}
}
}
我需要找到一种合适的方法来初始化变量opts,odata的测试对您有帮助吗
ODataQueryContext context=新的ODataQueryContext(EdmCoreModel.Instance,typeof(int));
HttpRequestMessage请求=新建HttpRequestMessage();
request.EnableHttpDependencyInjectionSupport();
模拟查询选项=新模拟(上下文、请求);
ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int));
HttpRequestMessage request = new HttpRequestMessage();
request.EnableHttpDependencyInjectionSupport();
Mock<ODataQueryOptions> queryOptions = new Mock<ODataQueryOptions>(context, request);