【问题标题】:How to add headers and file to junit test of REST [duplicate]如何将标头和文件添加到 REST 的 junit 测试 [重复]
【发布时间】:2015-12-05 08:02:09
【问题描述】:

这是我的功能:

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response postMsg(@HeaderParam("FTP-Host") String Host, @HeaderParam("FTP-Port") String Port,
        @HeaderParam("FTP-User") String User, @HeaderParam("FTP-Password") String Password,
        @HeaderParam("FTP-Path") String Path, @FormDataParam("file") InputStream inputStream) {

    try {
        InformationHandler informationHandler = new InformationHandler(Path, Host, Port, User, Password);

        CountriesStructure worker = new CountriesStructure();
        worker.prepareCountriesStructure(inputStream, true, informationHandler);

    } catch (UsernameOrPasswordException e) {
        e.printStackTrace();
        return Response.status(401).entity("Status 401.").build();
    } catch (SocketException e) {
        e.printStackTrace();
        return Response.status(404).entity("Status 404.").build();
    } catch (IOException e) {
        e.printStackTrace();
        return Response.status(400).entity("Status 400.").build();
    } catch (JAXBException e) {
        e.printStackTrace();
        return Response.status(500).entity("Status 500.").build();
    } catch (Exception e) {
        e.printStackTrace();
        return Response.status(500).entity("Status 500.").build();

    }
    return Response.status(200).entity("Success!").build();
}

我想在 Junit 中进行测试。但我不知道如何添加标题和文件。这是我的测试(有效):

@Test
public void firstTest()
        throws ClientProtocolException, IOException {
    HttpUriRequest request = new HttpGet("http://localhost:8080/JerseyWebApp/ftpaction/upload");
    HttpResponse httpResponse = HttpClientBuilder.create().build().execute(request);
    assertThat(httpResponse.getStatusLine().getStatusCode(), equalTo(HttpStatus.SC_METHOD_NOT_ALLOWED));
}

但是如何在此处添加标题和文件? 标题我认为我可以这样做:request.addHeader(value, key); 还是我错了?

而且我完全不知道如何添加文件进行测试:/

【问题讨论】:

  • 您可以使用 HTTPClient API。
  • Headers 通过 request.addHeader 添加。在您的测试中,您创建了 get 请求,但这是一个 PUT 处理程序,因此您应该创建 put 请求以便能够发送文件。可以使用stackoverflow.com/questions/11546609/…中描述的方法发送文件

标签: java junit


【解决方案1】:

您需要使用 Mockito 或其他框架来模拟 Header 对象

MockHttpServletRequest request = new MockHttpServletRequest();
request.addHeader("x-real-ip","127.0.0.1");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多