public void change_password_test() { // Arrange const string email = "*****@*****.**"; const string token = "test"; const string password = "******"; var userRepository = new Mock<IRepository<User>>(); userRepository.Setup(x => x.FindOne(It.IsAny<Expression<Func<User, bool>>>())).Returns(new User { Email = email, PasswordResetToken = token, PasswordHash = BCrypt.Net.BCrypt.HashPassword(password), PasswordResetRequestedAt = DateTime.Now }); // Act var userService = new UserService(userRepository.Object); var user = userService.ChangePassword(email, token, password); // Assert Assert.NotNull(user); userRepository.Verify(x => x.Update(It.IsAny<User>()), Times.Once); userRepository.Verify(x => x.SaveChanges(), Times.AtLeastOnce); }