public async Task Delete_Removes_TodoItem() { var dbContext = new Mock <TodoAppContext>(); ITodoItemProvider provider = new TodoItemProvider(dbContext.Object); var items = new List <TodoItemDAO>() { new TodoItemDAO() { Id = 1, Name = "TestItem1" }, new TodoItemDAO() { Id = 2, Name = "TestItem2" }, new TodoItemDAO() { Id = 3, Name = "TestItem3" } }; dbContext .Setup(m => m.TodoItems.Remove(It.IsAny <TodoItemDAO>())) .Callback <TodoItemDAO>((entity) => items.Remove(entity)); int idToDelete = 1; dbContext .Setup(s => s.TodoItems.Find(idToDelete)) .Returns(items.Single(s => s.Id == idToDelete)); await provider.Delete(idToDelete); Assert.Equal(2, items.Count()); dbContext.Verify(s => s.TodoItems.Find(idToDelete), Times.Once); dbContext.Verify(s => s.TodoItems.Remove(It.IsAny <TodoItemDAO>()), Times.Once); dbContext.Verify(s => s.SaveChangesAsync(new CancellationToken()), Times.Once); }