【发布时间】:2014-05-04 19:54:44
【问题描述】:
我正在尝试模拟 DbContext 和 DbSet。这适用于我之前的单元测试,但是当我的代码第二次在 DbSet 上调用 ToList 方法时出现问题。
第一个 dbSet.ToList() 返回模拟结果。 第二个返回0个元素;
var queryableData = new List<string>{ "a", "b", "c" }.AsQueryable();
var mockDbSet = new Mock<DbSet<string>>();
var q = mockDbSet.As<IQueryable<string>>();
q.Setup(m => m.Provider).Returns(queryableData.Provider);
q.Setup(m => m.Expression).Returns(queryableData.Expression);
q.Setup(m => m.ElementType).Returns(queryableData.ElementType);
q.Setup(m => m.GetEnumerator()).Returns(queryableData.GetEnumerator());
DbSet<string> dbset = mockDbSet.Object;
IQueryable<string> query = dbset;
//RESULTS: abc
var a1 = dbset.ToList();
foreach (var a in a1)
Console.Write(a);
//NO RESULTS
var a2 = dbset.ToList();
foreach (var a in a2)
Console.Write(a);
【问题讨论】:
标签: c# .net entity-framework unit-testing ado.net