0
클래스의 프로세스 메소드를 조롱하고 개인 메소드 readContent
및 isValidFile
및 userService
클래스를 테스트하려고합니다.jmockit에서 테스트중인 클래스의 모의 개인 메소드
@Named("processServiceImpl")
public class ProcessServiceImpl {
@Inject
private UserService userService;
public User process(Long userId, File inputFile) throws InvalidFileException {
User user = userService.load(userId);
String fileContent = readContent(inputFile);
if (isValidFile(fileContent)) {
User updatedUser = userService.updateUser(user, fileContent);
return updatedUser;
} else {
throw new InvalidFileException();
}
}
private String readContent(File inputFile) {
//implementation
}
private boolean isValidFile(String fileContent) {
//implementation
}
}
나는 UserService
을 조롱하고 성공적으로 주입했다. 그러나 나는 시험을 통해 수업의 개인적인 방법을 조롱 할 수 없다. this과 this 링크를 기반으로 나는 NonStrictExpectations
으로 그들을 조롱하려고했지만 어떤 invoke
방법이 없습니다! 이것을 할 또 다른 방법이 있습니까? invoke(...)
방법은 mockit.Deencapsulation
클래스에서 있습니다
new NonStrictExpectations(processServiceImpl) {{
invoke(processServiceImpl, "readContent");
result = "";
}};
이 특별한 경우에 맞습니다. 그러나 일부 클래스 (메서드 호출)에 의존하는 복잡한 개인 메서드에서 모든 종속 클래스를 조롱하는 대신 그것을 조롱하는 것이 그렇게 좋지 않다고 생각합니다. – united