System.inValidoperationException: Die Quelle 'iQueryable' implementiert nicht 'iAsyncenumerableC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 System.inValidoperationException: Die Quelle 'iQueryable' implementiert nicht 'iAsyncenumerable

Post by Anonymous »

Wenn ich meine Methode testen möchte, erhalte ich die Ausnahme: system.invalidoperationException: Die Quelle 'iQueryable' implementiert nicht 'iAsyncenumerable '. Nur Quellen, die 'iAsyncenumerable' implementieren`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>
Meine Testklasse: < /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>
Ich sehe viele Beispiele, um diese Ausnahme zu lösen. Ich habe viele Möglichkeiten ausprobiert, wie ich sie finde, aber nichts hilft mir.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post