在 Jersey 测试调用上设置查询参数

2022-09-02 23:40:08

我有一个基于泽西岛的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();
}

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

我浏览了泽西岛测试文档和一些示例,我发现了一些看起来很神秘的东西,这些东西可能是用于将参数传递给GET的,但是看起来都没有为参数分配值,所以我不确定如何使用它。

如何为该参数传递我的值?


答案 1

JavaDoc to WebTarget.queryParam() 应该会给你一个问题的答案。基本上,您需要将代码转换为如下内容:

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

答案 2

推荐