2.5 호출을 재생 : 우리가 주목하는 단위 테스트에 설정되는 상황이다일부 데이터를 얻기 위해 우리가 다른 서비스로 다가 우리의 컨트롤러 클래스에서 비동기의 컨텍스트를 유지
Future<JsonNode> futureSite = someClient.getSite(siteId, queryParams);
return FutureConverters.toJava(futureSite).thenApplyAsync((siteJson) -> {
Site site = Json.fromJson(siteJson, Site.class);
try {
return function.apply(site);
} catch (RequestException e) {
return e.result;
}
}).exceptionally(throwable -> {
if(throwable instanceof OurClientException) {
if(((OurClientException) throwable).httpStatusCode == 404) {
return entityNotFound("Site", siteId);
}
}
return null;
});
(우리는 scalatest 플레이를 사용)은 손실되고 비동기 호출을 수행하면 null이됩니다 (FutureConverters.toJava(futureSite).thenApplyAsync((siteJson)
, t는 별도의 스레드에 있기 때문입니다.
위의 함수를 사용하는 컨트롤러 코드에서 문제가 발생합니다 ... request()는 이제 사용할 수있는 컨텍스트가 없다는 런타임 예외를 throw합니다.
어떻게 컨텍스트를 보존 할 수 있습니까?