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

时间:2016-05-16 21:10:47

标签: java jersey multipartform-data dropwizard 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.glassfish.jersey.server.model.ModelValidationException:应用程序初始化期间应用程序资源模型的验证失败。

     

[[致命]找不到类型为public的参数的注入源...

如何为此问题编写正确的类规则?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

您可以看到完整示例here