0
다른 패키지에서 내부 정적 static final 클래스를 인스턴스화하려고하는 유스 케이스가 있습니다. 나는 이것을 수행하여 응답을 유닛 테스팅에 조롱 할 수 있습니다. 모의 서버 (mock server)를 사용할 수는 있지만, 속도와 제어 테스트를 위해 모의 객체를 사용하고 싶습니다. 아래 코드는 다음과 같습니다.다른 패키지에서 Java의 내부 정적 정적 final 클래스를 인스턴스화하는 방법
public class Http {
private final HttpClient client;
@Inject
Http(HttpClient client) {
this.client = client;
}
public Http.Response get(Http.Request request) {
try {
Http.Response response = this.getResponse(this.client.execute(this.createHttpGet(request)));
return response;
} catch (IOException var4) {
throw new RuntimeException(var4);
} catch (URISyntaxException var5) {
throw new RuntimeException(var5);
}
}
private Http.Response getResponse(HttpResponse httpResponse) throws IOException {
Http.Response response = new Http.Response(httpResponse.getStatusLine().getStatusCode());
response.setMessageBody(EntityUtils.toString(httpResponse.getEntity()));
return response;
}
public static final class Response {
private final int statusCode;
private ImmutableMap<String, String> headers;
private String message;
private String messageBody;
Response(int statusCode) {
this.statusCode = statusCode;
}
public int getStatusCode() {
return this.statusCode;
}
public Map<String, String> getHeaders() {
return this.headers;
}
void setHeaders(Map<String, String> headers) {
this.headers = ImmutableMap.builder().putAll(headers).build();
}
public String getMessage() {
return this.message;
}
void setMessage(String message) {
this.message = message;
}
public String getMessageBody() {
return this.messageBody;
}
void setMessageBody(String messageBody) {
this.messageBody = messageBody;
}
public String toString() {
return String.format("HttpResponse{statusCode=%d, headers=%s, message='%s', messageBody='%s'}", this.statusCode, this.headers, this.message, this.messageBody);
}
}
}