【发布时间】:2024-05-17 03:00:01
【问题描述】:
我有一个资源端点,它将 @PathParam 注入构造函数,即每个 @PathParam 值的不同实例。在 Jetty 中一切正常。但是现在我正在尝试使用 Jersey 测试框架编写单元测试,并且似乎测试框架只支持每种类型的一个注册端点。
所以如果我这样做:
@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) 的实例。这是预期的吗?是否有调用正确实例的解决方案?
【问题讨论】:
-
你应该把它注册为一个类。泽西岛将为您创建它。
-
我发布的例子是愚蠢的。实际上,我的资源构造函数有另一个需要模拟的注入对象。那么如何为构造函数指定一个模拟对象参数呢?
-
您使用的是什么 DI 框架?你用的是内置的HK2吗?
-
我们的应用程序通过 hk2 桥接器使用 guice,但在这个单元测试中我没有配置 guice 或任何其他 di。
标签: jersey jersey-test-framework