コード例 #1
0
        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());
        }