### Question:
UserServiceFacadeImpl implements UserServiceFacade { @Override public void editDetails(String username, String email, String cellPhoneNumber, String firstName, String lastName) { if (!Strings.hasText(username)) { logger.warn("username is null! cannot update {}, {}, {}, {}.", email, cellPhoneNumber, firstName, lastName); return; } UserAccount account = currentUser(); if (account == null || !username.equalsIgnoreCase(account.getUsername())) { logger.warn("current account not found, or username not matched!, username {}, current one", username, account == null ? "" : account.getUsername()); return; } ChangeInfoCommand command = new ChangeInfoCommand(new UserId(account.getPrimaryKey()), username, email, cellPhoneNumber, firstName, lastName); commandGateway.sendAndWait(command); logger.info("user info changed {}", command); }  @Override UserAccount currentUser(); @Override UserEntry currentDetailUser(); @Override boolean isWithdrawPasswordSet(); @Override boolean isWithdrawPasswordMatched(String withdrawPassword); @Override boolean canAuthWithNewPassword(String username, String newPassword); @Override UserPasswordReset getToken(String token); PortfolioEntry obtainPortfolioForUser(); @Override boolean matchPreviousPassword(String previousPassword); @Override void editDetails(String username, String email, String cellPhoneNumber, String firstName, String lastName); @Override void editAdminDetails(String username,
                                 String email,
                                 Identifier identifier,
                                 String cellPhoneNumber,
                                 String firstName,
                                 String lastName,
                                 List<String> roles); @Override void updateNotificationSettings(boolean logonAlert, boolean withdrawMoneyAlert, boolean withdrawItemAlert, boolean executedAlert); @Override void changePassword(String previousPassword,
                               String newPassword,
                               String confirmedNewPassword,
                               String operatingIp,
                               Date changedTime); @Override boolean createWithdrawPassword(String withdrawPassword, String confirmedWithdrawPassword, String operatingIp, Date changedTime); @Override boolean matchPreviousWithdrawPassword(String previousPassword); boolean generateForgetPasswordToken(String email, String operatingIp, Date currentTime); @Override UserAccount resetPasswordWithToken(String token,
                                              String password,
                                              String confirmedPassword,
                                              String operatingIp,
                                              Date resetTime); @Override void changeWithdrawPassword(String previousPassword,
                                       String withdrawPassword,
                                       String confirmedWithdrawPassword,
                                       String operatingIp,
                                       Date changedTime); @Override UserEntry findByEmail(String email); @Override int findPasswordResetCount(String email, String ip, Date currentDate); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setPasswordEncoder(PasswordEncoder passwordEncoder); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setCommandGateway(CommandGateway commandGateway); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserService(UserService userService); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserRepository(UserQueryRepository userRepository); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setPortfolioQueryRepository(PortfolioQueryRepository portfolioQueryRepository); @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired void setUserPasswordResetRepository(UserPasswordResetRepository userPasswordResetRepository); @Autowired void setEmailSender(ForgetPasswordEmailSender emailSender);  }### Answer:
@Test public void testEditDetails() { String incorrectName = "username1"; String email = "email"; String cellPhoneNumber = "12332456435456"; String firstName = "Mr f"; String lastName = "lastname"; UserService userService = mockUserService(); CommandGateway gateway = mock(CommandGateway.class); ChangeInfoCommand command = new ChangeInfoCommand(userId, username, email, cellPhoneNumber, firstName, lastName); UserServiceFacadeImpl service = new UserServiceFacadeImpl(); service.setUserService(userService); service.setCommandGateway(gateway); service.editDetails(username, email, cellPhoneNumber, firstName, lastName); service.editDetails(incorrectName, email, cellPhoneNumber, firstName, lastName); verify(userService, times(2)).getCurrentUser(); verify(gateway).sendAndWait(eq(command)); }