문제

MOQ 4.0.10827을 사용하여 EF 6.0.2에서 Async 메소드를 단위 테스트하려고 시도하고 있으며 주조 문제가있는 것으로 보이는 것으로 차단되고 있습니다.

다음은 잘 작동합니다.

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 절 추가)

public async Task<List<Testimonial>> GetByEventIdAsync(int eventId)
{
    var query = from t in _context.Testimonials
                where t.EventId == eventId
                orderby t.Ordinal
                select t;
    var result = query
        .ToListAsync()
        .ConfigureAwait(false);
    return await result;
}
.

나는 디버깅을했고 다음을 발견했다

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
.

클래스가 더블이 두 번 사라지는 이유는 무엇입니까?그리고 어떻게 수정합니까?

update : 나는 where를 다시 추가하고 orderby를 제거하고 문제가 해결되므로 문제가 여러 절이있는 것으로 보입니다.

도움이 되었습니까?

해결책

마침내

iQuelyable은 그렇게 추가해야했습니다 :

public class TestDbAsyncEnumerable<T> 
    : EnumerableQuery<T>, IDbAsyncEnumerable<T>, IQueryable
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top