THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Span | |
---|---|
|
|
...
JAX-RS |
...
Testing |
...
Table of Contents |
---|
JAX-RS endpoints can be easily tested using the embedded Jetty or CXF Local Transport.
...
Code Block | ||||
---|---|---|---|---|
| ||||
private static void startServer() throws Exception {
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setTransportId(LocalTransportFactory.TRANSPORT_ID);
sf.setAddress("/books");
sf.setResourceClasses(MyJaxrsResource.class);
server = sf.create();
}
@Test
public void testProxyPipedDispatchGet() throws Exception {
JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setTransportId(LocalTransportFactory.TRANSPORT_ID);
bean.setAddress("/books");
bean.setServiceClass(MyJaxrsResource.class);
MyJaxrsResource localProxy = bean.create(MyJaxrsResource.class);
Book book = localProxy.getBook("123");
assertEquals(123L, book.getId());
}
|
Mocking HTTP contexts
If you test a code which depends on the injected HTTP contexts such as HttpServletRequest then these contexts will have to be mocked.
For example:
Code Block |
---|
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setInvoker(new Invoker() { Invoker jarsInvoker = new JAXRSInvoker(); @Override public Object invoke(Exchange exchange, Object o) { HttpServletRequest request = Mockito.mock(HttpServletRequest.class); Mockito.when(request.getRemoteHost()).thenReturn("host"); exchange.getInMessage().put(AbstractHTTPDestination.HTTP_REQUEST, request); return jarsInvoker.invoke(exchange, o); } }); |