2

jmockitクラスA{privateMap authenticationMap;でこのコードをモックするにはどうすればよいですか?。。。public boolean createFirstTimerProfile(String password、String userName、String securityAnswer、String securityQuestion){

    String encryptedNewPassword = null;
    int userId;
    try {
        if(Util.isEmpty(password)||Util.isEmpty(userName)||Util.isEmpty(securityAnswer)||Util.isEmpty(securityQuestion))
            throw new CustomerEntryExceptions("values are null or empty");

        encryptedNewPassword =  encryptPassword(password);

        userId =(Integer.parseInt(authenticationMap.get("userid")));
        Connection con = Util.getConnection();
        if(clientUserManagement.addorupdatesecurityquestion(userName,securityQuestion, securityAnswer,userId,con)){
            String updatestatus = updateUserPassword(userId, encryptedNewPassword,
                     Boolean.parseBoolean(ServiceLocator.getConfigValue("authentication.fail_pwdchange_ind")),Integer.parseInt(ServiceLocator.getConfigValue("authentication.pwd_reason_firstlogin")));
            if(updatestatus.equals("updated")){
                velocityContextMembers = new HashMap<String,String>();
                velocityContextMembers.clear();
                velocityContextMembers.put("name", userName);
                velocityContextMembers.put("securityquestion", securityQuestion);
                velocityContextMembers.put("securityanswer", securityAnswer);
                velocityContextMembers.put("password", password);
                mailToUser(userId,"Authetication Profile Information","authenticationProfile_email_html.vm");
                return true;
            } else{
                throw new CustomerEntryExceptions("Password not updated");
            }
        } else{
            throw new CustomerEntryExceptions("Authentication profile not updated");
        }
    } catch (CustomerEntryExceptions e) {
        logger.error("createFirstTimerProfile() --> "+e.getMessage());
        return false;
    }

}

}

行をモックする方法Integer.Parseint(authenticationmap.get( "userid");

4

1 に答える 1

0

私は jan.vdbergh に同意します。嘲笑が最善の解決策であるかどうかはわかりません。

しかし、静的メソッドをモックしたい場合は、次のように処理できます。

@Test
public void myTestMethod(){
      new Expectations(){
          @Mocked 
          Integer integer= null;

          {
               Integer.parseInt(anyString);
               result = new NumberFormatException();

          }

       }
}
于 2013-10-30T12:48:19.760 に答える