コード例 #1
0
        public void GetUserConfirmation_AnyResult_CallsQueryMethodOfRepository()
        {
            var settingsMock = new Mock<ISettings>();
            var componentsMock = new Mock<IComponents>();
            var repositoryMock = new Mock<IRepository>();
            var uowMock = new Mock<IUnitOfWork>();
            var serviceLocatorMock = new Mock<IServiceLocator>();
            serviceLocatorMock.Setup(x => x.GetInstance<IRepository>())
                .Returns(repositoryMock.Object);
            serviceLocatorMock.Setup(x => x.GetInstance<IUnitOfWork>())
                .Returns(uowMock.Object);
            ServiceLocator.SetLocatorProvider(() => serviceLocatorMock.Object);

            // Arrange
            Guid id = Guid.NewGuid();
            Guid userId = Guid.NewGuid();
            User user = new User()
            {
                Id = userId

            };
            UserConfirmation userConfirmation = new UserConfirmation()
            {
                Id = id,
                User =user,
                Type = ConfirmedType.ChangeEmail
            };

            User[] users = new User[] { user };
            repositoryMock.Setup(r => r.Query<User>()).Returns(users.AsQueryable());

            UserConfirmation[] userConfirmations = new UserConfirmation[] { userConfirmation };
            repositoryMock.Setup(r => r.Query<UserConfirmation>()).Returns(userConfirmations.AsQueryable());

            repositoryMock.Setup(r => r.CreateUnitOfWork()).Returns(uowMock.Object);
            // Act
            var userService = new UserService(uowMock.Object,repositoryMock.Object, settingsMock.Object, componentsMock.Object);
            UserConfirmationDto actuauserConfirmationDto = userService.GetUserConfirmation(userId, userConfirmation.Type);

            // Assert
            repositoryMock.Verify(repo => repo.Query<UserConfirmation>());
            Assert.AreEqual(actuauserConfirmationDto.Id, userConfirmation.Id);
        }