C# 如何使用多子句对实体框架的异步方法进行单元测试
我正在尝试在EF 6.0.2和Moq 4.0.10827中对一个异步方法进行单元测试,我遇到了一个似乎是铸造问题的问题 以下工作很好:C# 如何使用多子句对实体框架的异步方法进行单元测试,c#,entity-framework,unit-testing,entity-framework-6,C#,Entity Framework,Unit Testing,Entity Framework 6,我正在尝试在EF 6.0.2和Moq 4.0.10827中对一个异步方法进行单元测试,我遇到了一个似乎是铸造问题的问题 以下工作很好: public async Task<List<Testimonial>> GetByEventIdAsync(int eventId) { var query = from t in _context.Testimonials orderby t.Ordinal se
public async Task<List<Testimonial>> GetByEventIdAsync(int eventId)
{
var query = from t in _context.Testimonials
orderby t.Ordinal
select t;
var result = query
.ToListAsync()
.ConfigureAwait(false);
return await result;
}
为什么这个班正在消失?我该如何修复它
更新:我还发现,如果我将where
添加回并删除orderby
,这同样有效,因此问题似乎有多个子句。最终找到了答案
IQueryable需要这样添加:
public class TestDbAsyncEnumerable<T>
: EnumerableQuery<T>, IDbAsyncEnumerable<T>, IQueryable
公共类TestDbAsyncEnumerable
:EnumerableQuery、IDBSyncEnumerable、IQueryable
谢谢你,我找错地方了,差点把它弄丢。
var q1 = _context.Testimonials; // Type = Castle.Proxies.IDbSet`1Proxy_1
var q2 = q1.Where(t => t.EventId == eventId); // Type = TestDbAsyncEnumerable`1 (from linked code)
var q3 = q2.OrderBy(o => o.Ordinal); // Type = System.Linq.EnumerableQuery`1
public class TestDbAsyncEnumerable<T>
: EnumerableQuery<T>, IDbAsyncEnumerable<T>, IQueryable