我可以让它工作,我其实不喜欢改变整体的想法
IProcedureService
因为它确实从实体框架返回了一个构建的int类型。因为我从程序服务获取数据并将它们返回到
IEnumerable
我只需要关心
GetEnumerator()
方法,所以我想首先检查代码是如何构造的,我发现
DbSqlQuery
继承自
DbRawSqlQuery
没有内部构造函数的问题。在本例中,我创建了一个名为
TestDbSqlQuery
会从
数据库查询
. 这个班级是这样的:
public class TestDbSqlQuery<T> : DbSqlQuery<T> where T : class
{
private readonly List<T> _innerList;
public TestDbSqlQuery(List<T> innerList)
{
_innerList = innerList;
}
public override IEnumerator<T> GetEnumerator()
{
return _innerList.GetEnumerator();
}
}
我故意加上
Lis<T>
作为参数,以便我可以将数据存储在该列表中,然后使用我的重写
IEnumerator<T>
.
_procedureService.Setup(x => x.GetUserVesselPermissions(It.IsAny<Guid>(), It.IsAny<DateTime>()))
.Returns(new TestDbSqlQuery<UserVesselPermissionsResult>(new List<UserVesselPermissionsResult>
{
new UserVesselPermissionsResult
{
PermissionId = 1
}
}));
TestDbSqlQuery测试数据库
可以根据需要进行修改,但想法是一样的,只需将对象存储在某个容器中,然后在中检索它们
GetEnumerator
方法。