бизнес-логике следующим образом:
var entities = await repo.FilteredBy().AsNoTracking().ToArrayAsync(cancellationToken);
И хочу замокать вызов этого метода в тестах через NSubstitute.
Но не могу допереть как правильно вернуть результат.
Если делаю вот так:
var mockedEntities = entities.AsMocked();
repo.FilteredBy().Returns(mockedEntites);
То на этапе билда ошибок нет, но во время выполнения ругается, что:
The source IQueryable doesn't implement IAsyncEnumerable<MyEntity>. Only sources that implement IAsyncEnumerable can be used for Entity Framework asynchronous operations.
Ребят, подскажите, как правильно это сделать?
а вот никак, IQueryable нормально практически не мокается, об этом и сами авторы еф кора пишут что мокать IQueryable и DbContext тяжко и неблагодарно
Нашёл решение этой проблемы. Можно написать расширения для Ef и использовать их в коде, тогда можно спокойно мокать методы, возвращающие IQueryable. https://pastebin.com/005C5Y16
как вариант - попробуй использовать настоящий еф, но инмемори бд
Обсуждают сегодня