Я пытаюсь проверить немного кода, который у меня есть:
public async Task<Sortation> SaveAsync(Sortation sortation)
{
if (sortation.Id == 0)
{
var sortations = await ListAsync(sortation.CategoryId);
sortation.Order = sortations.Count;
_sortationService.Create(sortation);
}
else
{
_sortationService.Update(sortation);
}
await _sortationService.SaveChangesAsync();
return sortation;
}
Метод ListAsync вызывает у меня проблему.
Я настроил свой тест так:
[Test]
public async Task ShouldHaveOrderOfZero()
{
// Assemble
const string categoryId = "cameras";
var services = SortationContext.GivenServices();
var sortationProvider = services.WhenGetSortationProvider();
var sortations = new List<Sortation>();
var sortation = new Sortation { CategoryId = categoryId };
services.MockSortationService.Setup(x => x.List()).Returns(sortations.AsQueryable);
// Act
await sortationProvider.SaveAsync(sortation);
// Assert
sortation.Order.Should().Be(0);
}
И когда я запускаю это, я получаю эту ошибку:
Сообщение: System.InvalidOperationException: исходный код IQueryable не реализует IDbAsyncEnumerable. Только источники, которые реализуют IDbAsyncEnumerable, могут использоваться для асинхронных операций Entity Framework.
В соответствии с этим: Для асинхронных операций Entity Framework могут использоваться только источники, реализующие IAsyncEnumerable Мне нужно добавить EF в мой проект UnitTest, что я и сделал.
Но ошибка все еще сохраняется.
Метод ListAsync выглядит следующим образом:
public async Task<List<Sortation>> ListAsync(string categoryId, params string[] includes) =>
await _sortationService.List(includes).Where(m => m.CategoryId.Equals(categoryId)).ToListAsync();
Кто-нибудь знает, как я могу предотвратить возникновение этой ошибки?