Когда я хочу проверить свой метод, я получаю исключение: 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#
Место общения программистов C#
1739638227
Anonymous
Когда я хочу проверить свой метод, я получаю исключение: 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>
Я вижу много примеров, чтобы решить это исключение. Я пробовал много способов, которые я ее нахожу, но ничего не помогил.
Подробнее здесь: [url]https://stackoverflow.com/questions/79441839/system-invalidoperationexception-the-source-iqueryable-doesnt-implement-ia[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия