public void Delete_Existing_Data_Should_Delete_The_Data() { var mockRepo = new Mock<IRepository<NewsRecord>>(); var news = new List<NewsRecord>() { new NewsRecord { Id = 1, Title = "HopHop1", Content = "The hoppy hop", PublishDate = DateTime.Now }, new NewsRecord { Id = 2, Title = "HopHop2", Content = "The hoppy hop2", PublishDate = DateTime.Now.AddDays(+5) }, new NewsRecord { Id = 3, Title = "HopHop3", Content = "The hoppy hop3", PublishDate = DateTime.Now.AddDays(+10) } }; int id = 1; mockRepo.Setup(r => r.FindById(id)).Returns(news.AsQueryable().SingleOrDefault(item => item.Id == id)); mockRepo.Setup(repo => repo.Delete(It.Is((NewsRecord n) => n.Id == id))) .Callback((NewsRecord n) => news.RemoveAt(news.FindIndex(x => x.Id == n.Id))); var controller = new NewsController(mockRepo.Object); this.SetupController(controller, "NewsController"); var result = controller.DeleteNewsRecord(id).ExecuteAsync(new CancellationToken()).Result; Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); Assert.AreEqual(2, news.Count); }