Подтвердить что ты не робот

Подделка IDbSet <T> с поддержкой асинхронных операций

Я пытаюсь создать unit test мой первый репозиторий в новом проекте, где мы решили использовать EF6 в основном для асинхронных файлов. У меня возникают проблемы с подделкой IDbSet для моей модели и использование любого Linq перед использованием новых асинхронных тонкостей.

Я использую FakeDbSet как указанный в этом сообщении. Если я делаю простой запрос, например

await set.FirstOrDefaultAsync(e => e.Approved);

это отлично работает.

Проблема возникает, когда я пытаюсь сделать:

await set.OrderByDescending(e => e.Date)
         .FirstOrDefaultAsync(e => e.Approved)`

Затем я получаю сообщение об ошибке:

System.InvalidOperationException: поставщик исходного IQueryable не реализует IDbAsyncQueryProvider.

Разрывая свободный синтаксис и анализируя результат на каждом шаге, мне ясно, что IDbAsyncQueryProvider исчезает после первого "обычного" оператора Linq (например, OrderBy, Where или Select).

Как я могу заставить это работать?

Обновить (так как была некоторая путаница): Есть 2 проекта; назовите их репозиторием и тестом. Тестирование ссылок на референции. Вызов Where происходит в репозитории, и он не знает о FakeDbSet (и не должен, поскольку это класс только для проверки).

Обновление 2. Простой демонстрационный проект

4b9b3361