的 Micronaut 文件上传控制器(在 Java 中)具有以下签名:@Consumes(MediaType.MULTIPART_FORM_DATA)@Produces("application/json")@Postpublic Single<IdType> uploadFile(Publisher<CompletedFileUpload> files)我有以下工作 Spock 测试(在 Groovy 中):@MicronautTestclass UploadSpecification extends Specification implements CsvFileBuilder { @Inject @Client('/') HttpClient client @Shared List<String> allowedMimeTypes = List.of("text/csv", "application/vnd.ms-excel") @Unroll void "upload mailings csv with content type #mediaType"() { given: MultipartBody multipartBody = MultipartBody .builder() .addPart("files", "myfile.csv", new MediaType(mediaType), createCsvAsBytes(buildCsv())) .build() when: HttpResponse response = client.toBlocking() .exchange(POST("/v1/mailings", multipartBody).contentType(MediaType.MULTIPART_FORM_DATA_TYPE)) then: response.status == HttpStatus.OK where: mediaType << allowedMimeTypes }}我想对测试进行更改的是:HttpClient我不想使用在测试顶部注入的标准,而是使用这样的东西:@InjectUploadClient uploadClient@Client(value = "/v1/mailings")static interface UploadClient { @Post HttpResponse postFile(...)}我的问题是,postFile客户需要什么签名?我仍然可以使用MultipartBody但以某种方式将其转换为CompletedFileUpload? 我真的不知道如何解决这个问题,而且我是一个初学者RxJava。任何帮助表示赞赏。
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
请尝试以下操作:
@Client(value ="/v1/upload")
static interface UploadClient {
@Post(uri = "/mailings", produces = MediaType.MULTIPART_FORM_DATA)
HttpResponse postFile(@Body MultipartBody file)
}
添加产品和正文注释
添加回答
举报
0/150
提交
取消