Jersey предлагает неплохие тулзы для тестирования.
Единственное что они подымают реальный контейнер для запуска сервлеты сервера
org.glassfish.jersey.test.grizzly.GrizzlyTestContainerFactory$GrizzlyTestContainer
что занимает определенное время... Но это можно пережить.
Необходимы классы вот:
Первая група это просто классы для работы с JAX-RS по спецификации.
А вот вторая уже стыковка со спрингом(если он у нас для поддержания контекста зависимостей) и уже JerseyTest класс, который мы расширяем для магии
Единственное что они подымают реальный контейнер для запуска сервлеты сервера
org.glassfish.jersey.test.grizzly.GrizzlyTestContainerFactory$GrizzlyTestContainer
что занимает определенное время... Но это можно пережить.
Необходимы классы вот:
import javax.ws.rs.client.Entity; import javax.ws.rs.core.Application; import javax.ws.rs.core.Form; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.spring.SpringLifecycleListener; import org.glassfish.jersey.test.JerseyTest;
Первая група это просто классы для работы с JAX-RS по спецификации.
А вот вторая уже стыковка со спрингом(если он у нас для поддержания контекста зависимостей) и уже JerseyTest класс, который мы расширяем для магии
public class MyRestResourceTest extends JerseyTest {
@Override
protected Application configure() {
ResourceConfig appConfig = new ResourceConfig(MyRestResource.class);
appConfig.register(SpringLifecycleListener.class);
appConfig.property("contextConfigLocation", "file:src/main/webapp/WEB-INF/spring/root-context.xml");
return appConfig;
}
@Test
........
}
Расширение этого класса позврояет нам пользоваться методом, который дарует возможность запросов на сервер:
public class MyRestResourceTest extends JerseyTest {
........
@Test
public void testSomeGet() throws Exception {
final Response resp = target().path("/somepath")
.request(javax.ws.rs.core.MediaType.APPLICATION_JSON)
.get();
assertThat(resp.getStatus(), is(200));
String someJsonForParsing = response.readEntity(String.class);
...
}
........
}
Ну и чего-нибудь отправим:
public class MyRestResourceTest extends JerseyTest {
........
@Test
public void testSomePost() throws Exception {
Form form = new Form() ;
form.param("param1", "value");
final Response resp = target("path/for/post").request(javax.ws.rs.core.MediaType.APPLICATION_JSON)
.post(Entity.entity(form, "application/x-www-form-urlencoded"));
assertThat(resp.getStatus(), is(200));
String someJsonForParsing = response.readEntity(String.class);
...
}
........
}
Комментариев нет:
Отправить комментарий