@PathParam をコンストラクターに挿入するリソース エンドポイントがあります。つまり、@PathParam 値ごとに異なるインスタンスです。Jetty ではすべて正常に動作します。しかし今、Jersey Test Framework を使用して単体テストを作成しようとしています。テスト フレームワークは、タイプごとに 1 つの登録済みエンドポイントしかサポートしていないようです。
したがって、次のようなことをすると:
@Path("/users")
public class MyResource {
public MyResource(@PathParam("userId") int userId) {
}
@Path("{userId}")
public String get() {
}
}
public class MyTest extends JerseyTestNg.ContainerPerClassTest {
@Override
protected Application configure() {
return new ResourceConfig()
.register(new MyResource(1))
.register(new MyResource(2));
}
@Test
public void test2() {
target("/users/1").request().get();
}
@Test
public void test2() {
target("/users/2").request().get();
}
}
test1 と test2 の両方が MyResource(1) のインスタンスを呼び出していることがわかります。これは期待されていますか?正しいインスタンスを呼び出す解決策はありますか?