0
我需要在使用odata的web api中对控制器进行单元测试。无法模拟OdataQueryOptions
我用Moq来模拟实体框架。我无法嘲笑OdataQueryOptions作为参数传递给控制器的操作。
[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());
}
}
}
我需要找到一个合适的方式来初始化变量选择采用