Когда я хочу проверить свой метод, я получаю исключение: System.InvalidoPerationException: источник «iqueryable» не реализует 'iAsyncenumerable '. Только источники, которые реализуют «iaSyncenumerable», могут использоваться для асинхронных операций по сунтере .:
public async Task GetInactiveUsers(IUserRepository userRepository, IMeetingRepository meetingRepository, int daysThreshold)
{
var usersWithLastActivity = await userRepository.Queryable()
.Select(user => new
{
User = user,
LastMeetingDate = meetingRepository.Queryable()
.Where(meeting => meeting.UserMeetings.Any(userMeeting => userMeeting.UserId == user.Id))
.OrderByDescending(meeting => meeting.MeetingAt)
.Select(meeting => meeting.MeetingAt)
.FirstOrDefault()
})
.ToListAsync();
return usersWithLastActivity
.Where(userWithDate =>
{
if (userWithDate?.LastMeetingDate == null)
return false;
var daysSinceLastActivity = (DateTime.UtcNow.Date - userWithDate.LastMeetingDate.Date).Days;
return daysSinceLastActivity == daysThreshold;
});
}
< /code>
Мой тестовый класс: < /p>
public async Task GetInactiveUsers_ReturnsCorrectUsers()
{
// Arrange
var users = new List
{
new() { Id = 1, UserName = "User1" },
new() { Id = 2, UserName = "User2" },
new() { Id = 3, UserName = "User3" }
};
var meetings = new List
{
new() { Id = 1, MeetingAt = DateTime.UtcNow.AddDays(-7), UserMeetings = new List { new() { UserId = 1 } } },
new() { Id = 2, MeetingAt = DateTime.UtcNow.AddDays(-10), UserMeetings = new List { new() { UserId = 2 } } },
new() { Id = 3, MeetingAt = DateTime.UtcNow.AddDays(-3), UserMeetings = new List { new() { UserId = 3 } } }
};
var mockUserRepository = new Mock();
mockUserRepository.Setup(repo => repo.Queryable()).Returns(users.AsQueryable());
var mockMeetingRepository = new Mock();
mockMeetingRepository.Setup(repo => repo.Queryable()).Returns(meetings.AsQueryable());
var service = new NotificationOfInactiveUsersHostedService(
new Mock().Object,
new Mock().Object
);
// Act
var result = await service.GetInactiveUsers(mockUserRepository.Object, mockMeetingRepository.Object, 7);
// Assert
Assert.Single(result);
Assert.Equal(7, (DateTime.UtcNow.Date - meetings.First(m => m.UserMeetings.Any(um => um.UserId == result.First().Id)).MeetingAt.Date).Days);
}
< /code>
Я вижу много примеров, чтобы решить это исключение. Я пробовал много способов, которые я ее нахожу, но ничего не помогил.
Подробнее здесь: https://stackoverflow.com/questions/794 ... plement-ia
System.invalidoperationException: источник «iqueryable» не реализует «iAsyncenumerable ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
System.invalidoperationException: источник «iqueryable» не реализует «iAsyncenumerable
Anonymous » » в форуме C# - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
System.invalidoperationException: источник «iqueryable» не реализует «iAsyncenumerable
Anonymous » » в форуме C# - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Итерация IAsyncenumerable в функции, возвращающей IAsyncenumerable с отменой
Anonymous » » в форуме C# - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-