public void ReturnOnlyPassangers_ForTheTripWithProviderId() { // Arrange var mockedTripRepo = new Mock <IProjectableRepositoryEf <Trip> >(); var mockedUserTripRepo = new Mock <IProjectableRepositoryEf <UsersTrips> >(); var mockedCityService = new Mock <ICityService>(); var mockedTagService = new Mock <ITagService>(); var mockedDateTimpeProvider = new Mock <IDateTimeProvider>(); var mockedMappingProvider = new Mock <IMappingProvider>(); var mockedUnitOfWork = new Mock <IUnitOfWorkEF>(); var tripService = new TripService( () => mockedUnitOfWork.Object, mockedUserTripRepo.Object, mockedCityService.Object, mockedMappingProvider.Object, mockedTagService.Object, mockedTripRepo.Object, mockedDateTimpeProvider.Object); var data = new List <UsersTrips>() { new UsersTrips() { TripId = 1, UserTripStatusId = (int)UserTripStatusType.Pending }, new UsersTrips() { TripId = 1, UserTripStatusId = (int)UserTripStatusType.Accepted }, new UsersTrips() { TripId = 1, UserTripStatusId = (int)UserTripStatusType.Owner }, }; int countOfPassangersInTheTrip = 2; List <PassangerInfo> expectedPassangers = null; mockedUserTripRepo.Setup(x => x.GetAllMapped <PassangerInfo>(It.IsAny <Expression <Func <UsersTrips, bool> > >())) .Returns((Expression <Func <UsersTrips, bool> > predicate) => { expectedPassangers = data.Where(predicate.Compile()).Select(x => new PassangerInfo() { TripId = x.TripId }).ToList(); return(expectedPassangers); }); // Act var result = tripService.GetPassengersForTheTrip(1).ToList(); // Assert Assert.AreEqual(countOfPassangersInTheTrip, result.Count()); Assert.AreEqual(expectedPassangers[0].Id, result[0].Id); Assert.AreEqual(expectedPassangers[1].Id, result[1].Id); }