別のメソッド内のメソッドが呼び出されるかどうかを確認したい (別のメソッドが false を返す場合)
少し複雑に聞こえますが、コードを提供すると、はるかに理解しやすくなるはずです。
これが可能かどうか誰にもわかりますか?
usermanagement.storeUser(user1) が false を返したときに、次のメソッドが RegisterGUI.errorDuplicateUsername() を呼び出すかどうかを確認したいと思います。
public class RegisterController {
public void regHandle(UserDataObject user1){
ValidateRegisterInputController validate = new ValidateRegisterInputController();
validate.validateInputHandle(user1);
OracleUserManagement usermanagement = OracleUserManagement.getInstance();
if (usermanagement.storeUser(user1) == false) {
RegisterGUI.errorUsernameDuplicate(); }
}
}
これは私がこれまでに持っているものです:
/** Step1. Mock UserDataObject and stub OracleUserManagement.storeUser(UserDataObject) to return false.
* Step2. Check if RegisterController.regHandle(MockedUserDataObject) calls RegisterGUI.errorDuplicateUsername
* Step3. See if Test passes!
*/
@Test
public void testRegisterControllerregHandleCallsLoginGUIerrorDuplicateUsernameWhenOracleUserManagementstoreUserReturnsFalse(){
UserDataObject user1mocked = mock(UserDataObject.class);
OracleUserManagement usermanagementmocked = mock(OracleUserManagement.class);
when(usermanagementmocked.storeUser(user1mocked)).thenReturn(false);
/** This is where I'm a bit confused. How can I test that when I run this
* method, it will call RegisterGUI.errorDuplicateUsername()?
*/
RegisterController regcontroller = new RegisterController();
regcontroller.regHandle(user1mocked);
verify(RegisterGUI.errorUsernameDuplicate())
}
}
ただし、検証メソッドを使用できないと表示されます