如何在JerseyTest中使用@Context参数测试HttpservletRequest?

时间:2018-11-20 14:40:00

标签: servlets mockito jersey-2.0 grizzly jersey-test-framework

尝试获取HttpServletRequest作为参数传递到Jersey Web Service帖子调用后,我的单元测试已损坏:

@RequestScoped
@Path("/por/req")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_JSON })
public class MyOwnWs {

@POST
@Path("/confirm")
public Response confirmarRequerimento(
        @ApiParam(value = "Description", required = false)
        final InputJson input,
        @Context HttpServletRequest request) throws MyException {


   Response response = null;
   MyResult result = null;

   String ipAdress = IpUtil.getIp(request);

   // do stuff

   return response;
}
}

在浏览器中测试很好,请求对象包含我的测试机ip地址。但是int灰白地进行单元测试时,请求对象始终为null,而我仍然没有找到模拟它的方法。我的测试代码的相关部分如下:

MyResult response = target(URL).
            request().
            post(Entity.json(input), MyResult.class);

在服务调用中添加@Context HTTPServletRequest之前,此方法工作正常。关于我所缺少的内容有什么疑问吗?

0 个答案:

没有答案