Mock化できない理由
結論
Mock化するインスタンスをコンストラクタ、セッター、プロパティ(フィールド)で、インスタンスにする必要があり。
以下のコードの場合、Mock化はできない
public class LoginCheck {
/**
*ユーザーテーブルから全データを取得
* @return
*/
public List<User> execute() {
UserDAO dao = new UserDAO();
List<User> user = dao.findAll();
return user;
}
}
なぜなら、テストするメソッド内でインスタンス化しているから。
下記のコードの場合は、Mock化できる
public class LoginCheck {
private LoginCheck LC;
private UserDAO userdao;
private User user;
public LoginCheck() {
super();
userdao = new UserDAO();
user = new User();
}
/**
*ユーザーテーブルから全データを取得
* @return
*/
public List<User> execute() {
UserDAO dao = new UserDAO();
List<User> user = dao.findAll();
return user;
}
/*こちらのやり方でもできます。
public List<User> execute() {
List<User> user = userdao.findAll();
return user;
}
*/
参考資料