Рассмотрим асинхронный метод JAX-RS, являющийся частью OkResource
:
@GET
@Path("/ok")
@ManagedAsync
public void getOk(@Suspended final AsyncResponse asyncResponse) {
asyncResponse.resume("OK");
}
Dropwizard, основанный на Джерси, предоставляет полезную ResourceTestRule
.Тестовый класс для вышеуказанного метода будет содержать экземпляр этого правила.
@ClassRule
public static ResourceTestRule RULE = ResourceTestRule.builder()
.addResource(new OkResource())
.build();
Тестовый метод для метода JAX-Rs будет выглядеть как
@Test
public void testGetOk() {
Response response = RULE.target("/ok).request().get();
// assert ...
}
Для синхронный Методы JAX-RS это прекрасно работает.Но для асинхронного JAX-RS, как и выше, этот подход не работает:
WARN [2019-06-26 09: 15: 15,811] org.glassfish.jersey.test.inmemory.InMemoryConnector: Асинхронные вызовы на стороне сервера не поддерживаются InMemoryContainer.
Существует ли другой способ тестирования асинхронных методов JAX-RS без необходимости прямого вызова метода (getOk
в данном случае) с высмеянным AsyncResponse
?