public async Task GetAllTodosAsync_MakesCorrectCallsAndReturnsCorrectObject() { // Arrange var expectedTodoDTOs = new List <TodoDTO>() { new TodoDTO() { Id = 1, Name = "Test Todo", IsComplete = true } }; var mockedRepository = new Mock <ITodosRepository>(); var mockedMapper = new Mock <IMapper>(); mockedRepository.Setup(r => r.GetAllTodosAsync()).ReturnsAsync(It.IsAny <IEnumerable <Todo> >()); mockedMapper.Setup(m => m.Map <IEnumerable <Todo>, IEnumerable <TodoDTO> >(It.IsAny <IEnumerable <Todo> >())).Returns(expectedTodoDTOs); var service = new TodosService(mockedMapper.Object, mockedRepository.Object); // Action var actualTodoDTOs = await service.GetAllTodosAsync(); // Assert Assert.NotNull(actualTodoDTOs); Assert.Single(actualTodoDTOs); Assert.Equal(expectedTodoDTOs, actualTodoDTOs); Assert.Equal(expectedTodoDTOs[0].Id, actualTodoDTOs.ToList()[0].Id); Assert.Equal(expectedTodoDTOs[0].Name, actualTodoDTOs.ToList()[0].Name); Assert.Equal(expectedTodoDTOs[0].IsComplete, actualTodoDTOs.ToList()[0].IsComplete); mockedRepository.Verify(r => r.GetAllTodosAsync(), Times.Once()); mockedMapper.Verify(m => m.Map <IEnumerable <Todo>, IEnumerable <TodoDTO> >(It.IsAny <IEnumerable <Todo> >()), Times.Once()); }