C# 在模拟上模拟ToListSync<;DbSet<;T>&燃气轮机;使用最小起订量

C# 在模拟上模拟ToListSync<;DbSet<;T>&燃气轮机;使用最小起订量,c#,entity-framework,mocking,moq,C#,Entity Framework,Mocking,Moq,我有一个方法,可以将列表转换为DbSet,在模拟数据库上下文应该返回的数据时使用它。例如: MockedDatabaseContext.Setup(u => u.SomeTable).Returns(GetDbSet(ListOfItems)); 然而,我试图为其编写单元测试的方法在某一点上使用ToListSync方法将IQueryable转换为列表 有没有办法使用Moq框架对ToListSync方法调用进行设置? 我试过这个: dbSet.Setup(d => d.ToListA

我有一个方法,可以将列表转换为DbSet,在模拟数据库上下文应该返回的数据时使用它。例如:

MockedDatabaseContext.Setup(u => u.SomeTable).Returns(GetDbSet(ListOfItems));
然而,我试图为其编写单元测试的方法在某一点上使用ToListSync方法将IQueryable转换为列表

有没有办法使用Moq框架对ToListSync方法调用进行设置?

我试过这个:

dbSet.Setup(d => d.ToListAsync(CancellationToken.None)).Returns((Task<List<T>>) Task.CompletedTask);
dbSet.Setup(d=>d.ToListAsync(CancellationToken.None)).Returns((Task)Task.CompletedTask);

但这会在上面的一行引发“ThrowifSetupExpressionVolvesUnsupportedMember”异常。

不是对您的问题的真实答案,但同意您不应尝试模拟EF。我建议您考虑使用InMemory数据库包进行测试。如果您想继续下去,请注意,您必须手动实现大部分内容
ToListAsync
是一种扩展方法,因为Moq无法设置/mock扩展方法,因此无法工作。您最好模拟
DbSet
此问题已得到回答: