Мне нужно выполнить единичный тест метода, и я хотел бы высмеять поведение, чтобы я мог проверить необходимую часть кода в методе.Перехват объекта, возвращенный частным методом в общедоступном методе
Для этого я хотел бы получить доступ к объекту, возвращаемому частным методом внутри метода, который я пытаюсь проверить. Я создал образец кода, чтобы дать общее представление о том, чего я пытаюсь достичь.
Main.class
Class Main {
public String getUserName(String userId) {
User user = null;
user = getUser(userId);
if(user.getName().equals("Stack")) {
throw new CustomException("StackOverflow");
}
return user.getName();
}
private User getUser(String userId) {
// find the user details in database
String name = ""; // Get from db
String address = ""; // Get from db
return new User(name, address);
}
}
испытаний Класс
@Test (expected = CustomException.class)
public void getUserName_UserId_ThrowsException() {
Main main = new Main();
// I need to access the user object returned by getUser(userId)
// and spy it, so that when user.getName() is called it returns Stack
main.getUserName("124");
}
Я бы точно не сказал, что создание защищенного метода улучшает качество кода, а скорее издевается над частью «get from db». – skomp
@Egor Я не уверен, что я полностью следую, но как насмехается частный метод, помогите мне создать шпион на пользовательском объекте? – bharathp