在Jersey测试呼叫上设置查询参数

时间:2014-07-15 23:53:05

标签: java jersey jersey-2.0 grizzly

我有一个基于Jersey的Java servlet:

@Path("foo")
class Foo {
  @GET
  @Path("bar")
  public Response bar(@QueryParam("key") String value) {
    // ...
  }
}

我可以在Tomcat中调用它,因为:

http://localhost:8080/container/foo/bar?key=blah

然而,在我的JerseyTest中,使用Grizzly,它没有正确处理参数。此测试用例返回404错误:

@Test
public void testBar() {
  final Response response = target("foo/bar?key=blah").request().get();
}

我怀疑问题是它正在寻找名为foo/bar?key=blah的资源,而不是试图将key=blah传递给foo/bar的资源。如果我只将"foo/bar"传递给target(),我会得到500,因为代码会抛出null参数的异常。

我查看了Jersey测试文档,以及一些示例,我发现了一些可能用于将参数传递给GET的神秘内容,但是没有一个看起来像是为参数赋值,所以我不是&#我肯定会如何使用它。

如何为该参数传递值?

1 个答案:

答案 0 :(得分:35)

JavaDoc到WebTarget.queryParam()应该可以帮助您解决问题。基本上,您需要将代码转换为:

target("foo/bar").queryParam("key", "blah").request().get()