public void ReturnEmptyCollction_WhenDeletedTripsAreMarkedAsFinished() { // 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 <Trip>() { new Trip() { IsDeleted = true, IsFinished = true }, new Trip() { IsDeleted = true, IsFinished = true }, new Trip() { IsDeleted = true, IsFinished = true } }; IEnumerable <TripBasicInfo> expected = null; mockedTripRepo.Setup(x => x.GetAllMapped <TripBasicInfo>(It.IsAny <Expression <Func <Trip, bool> > >())) .Returns((Expression <Func <Trip, bool> > predicate) => { expected = data.Where(predicate.Compile()).Select(x => new TripBasicInfo()); return(expected); }); // Act var result = tripService.GetDeletedTrips(); // Assert Assert.AreEqual(0, result.Count()); CollectionAssert.AreEqual(expected, result); }