如何使用 Multipart 特性进行资源测试
How to make resource test with Multipart feature
我创建了我的资源来处理一些图像,我想像以前一样使用 JUnit @ClassRule
测试它们。它们看起来像这样:
@Path("/myImage")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response postImage(
@FormDataParam("file") InputStream inputStream) {
//doStuff
}
现在,我想测试一下,但遇到了问题。我争取这个 class 规则可以
@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addResource(new MultiPartBundle())
.build();
但我仍然遇到错误
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public ...
如何为这个问题编写正确的 class 规则?
错误是因为您没有向服务器注册MutliPartFeature
。 MultiPartBundle
(注册 MultiPartFeature
)不受 ResourceTestRule
支持。所以你只需要自己注册
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addProvider(MultiPartFeature.class)
.build();
与客户端相同。如果您想在客户端使用多部分序列化,您还需要注册该功能
resource.client().register(MultiPartFeature.class)..
你可以看到一个完整的例子here
我创建了我的资源来处理一些图像,我想像以前一样使用 JUnit @ClassRule
测试它们。它们看起来像这样:
@Path("/myImage")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response postImage(
@FormDataParam("file") InputStream inputStream) {
//doStuff
}
现在,我想测试一下,但遇到了问题。我争取这个 class 规则可以
@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addResource(new MultiPartBundle())
.build();
但我仍然遇到错误
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public ...
如何为这个问题编写正确的 class 规则?
错误是因为您没有向服务器注册MutliPartFeature
。 MultiPartBundle
(注册 MultiPartFeature
)不受 ResourceTestRule
支持。所以你只需要自己注册
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addProvider(MultiPartFeature.class)
.build();
与客户端相同。如果您想在客户端使用多部分序列化,您还需要注册该功能
resource.client().register(MultiPartFeature.class)..
你可以看到一个完整的例子here