web-dev-qa-db-ja.com

ジャージーテストコールでクエリパラメータを設定する

ジャージーベースのJavaサーブレット:

_@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()に渡すと、コードがnullパラメーターの例外をスローするため、500が返されます。

ジャージーテストのドキュメントといくつかの例を調べたところ、パラメーターをGETに渡すためのものである可能性のある不可解なものがいくつか見つかりましたが、パラメーターに値を割り当てているようには見えなかったため、どのように肯定的ではありませんでした私はそれを使います。

そのパラメータの値を渡すにはどうすればよいですか?

13
kwiqsilver

JavaDoc to WebTarget.queryParam() は、問題に対する答えを提供するはずです。基本的に、コードを次のようなものに変換する必要があります。

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