【问题标题】:Jetty and JUnit - sending stub responses over httpJetty 和 JUnit - 通过 http 发送存根响应
【发布时间】:2013-05-22 20:03:20
【问题描述】:

我需要通过 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 的 handle 方法将被调用并将这个虚拟 XML 响应写入流,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 运行相同的东西时,它会抛出上面提到的错误。我做错了什么?

【问题讨论】:

  • 嗯.. 我自己似乎已经解决了这个问题。我不知道我所做的是对还是错..但它现在有效。我所做的是,我添加了一个这样的 servlet 上下文:'ServletContextHandler ctx = new ServletContextHandler();' ctx.setHandler(new HelloHandler()); // 为 servletcontext 设置一个处理程序 server.setHandler(ctx);在处理程序内部,我使处理程序扩展了 ScopedHandler 而不是 AbstractHandler。 Handler 将实现 doScope 和 doHandle 方法。

标签: junit jetty junit4 embedded-jetty jetty-8


【解决方案1】:

您可以尝试使用 Jadler (http://jadler.net),而不是实现自己的码头处理程序,这是一个我已经研究了一段时间的 http stubbing/mocking 库。

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2015-10-24
    • 2021-01-12
    相关资源
    最近更新 更多