Jetty и JUnit - отправка ответов на заглушки по http
Мне нужно отправить ответ заглушки через http запрашивающему клиенту от Jetty. Он работает, когда я запускаю тест Junit независимо, подразумевает, что я получаю правильный XML-ответ... но не получается, когда я запускаю ту же самую вещь из maven. Я вижу ошибку "java.net.SocketException: Unexpected end of file from server
Я все перепробовал! Пожалуйста, помогите!
Вот мой код -
Junit (при запуске как тест Junit - работает)
public class MyTest {
@Test
public void testGetOpenLots() throws Exception {
// create fixture
MyService fixture = new MyService();
// create jetty server instance
Server server = new Server(8080);
// set a handler
server.setHandler(new HelloHandler());
// set shutdown conditions
// server.setStopAtShutdown(true);
// start server
server.start();
// invoke operation
MyResponse result = fixture.getWeather(someDummyRequest);
assertNotNull(result);
}
}
Где-то внизу, внутри getWeather(), я создаю объект URL и передаю URL http://localhost:8080
и отправьте запрос на этот URL. На этом этапе я ожидаю, что метод дескриптора HelloHandler будет вызван и запишет этот фиктивный XML-ответ в stream, а метод getWeather () получит ответ.
Вот обработчик:
public class HelloHandler extends AbstractHandler {
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("application/xml;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<result>a simple response</result>");
}
}
Когда я запускаю ту же самую вещь из maven, она выдает ошибку, упомянутую выше. Что я делаю неправильно?
1 ответ
Вместо того, чтобы реализовывать свой собственный обработчик причала, вы можете попробовать Jadler ( http://jadler.net/), библиотеку http-заглушки / издевательства, над которой я работал некоторое время.