public void AddCity_When_city_Then_SaveChanges_of_UnitOfWork_called() { // Arrange var city1 = new CityName { Id = 1, Name = "City1" }; var city2 = new CityName { Id = 2, Name = "City2" }; var cityRepository = A.Fake <IRepository <CityName> >(); A.CallTo(() => cityRepository.Query()).Returns(new[] { city1 }.AsQueryable()); var unitOfWork = A.Fake <IUnitOfWork>(); A.CallTo(() => unitOfWork.Repository <CityName>()).Returns(cityRepository); var unitOfWorkFactory = A.Fake <IUnitOfWorkFactory>(); A.CallTo(() => unitOfWorkFactory.Create()).Returns(unitOfWork); var service = new WeatherService(unitOfWorkFactory); // Act service.AddCity(city2); // Assert A.CallTo(() => unitOfWork.SaveChanges()).MustHaveHappened(Repeated.Exactly.Once); }