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());
}
}
}
我需要找到一個合適的方式來初始化變量選擇採用