如何使用Multipart功能进行资源测试



我创建了资源来处理一些图像,我想像以前一样用JUnit的@ClassRule测试它们。它们看起来像这样:

@Path("/myImage")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response postImage(
       @FormDataParam("file") InputStream inputStream) {
//doStuff
}

现在,我想测试它,但我有一个问题。我认为这个类规则可以

@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
                .addResource(new MyResource())
                .addResource(new MultiPartBundle())
                .build();

但我仍然收到错误

org.grassfish.jersey.server.model.ModelValidationException:应用程序初始化期间,应用程序资源模型的验证失败。

[[FATAL]找不到public类型参数的注入源。。。

如何为这个问题编写一个合适的类规则?

错误是因为您没有向服务器注册MutliPartFeatureMultiPartBundle(注册MultiPartFeature)不是ResourceTestRule所支持的。所以你只需要自己注册

public static final ResourceTestRule resources = ResourceTestRule.builder()
                .addResource(new MyResource())
                .addProvider(MultiPartFeature.class) 
                .build();

与客户相同。如果您想在客户端上使用多部分序列化程序,您还需要注册该功能

resource.client().register(MultiPartFeature.class)..

您可以在这里看到完整的示例

最新更新