为了账号安全,请及时绑定邮箱和手机立即绑定

在 Spock 测试中使用 @Client 在 Micronaut 中进行 HTTP 多部分文件上传

在 Spock 测试中使用 @Client 在 Micronaut 中进行 HTTP 多部分文件上传

蝴蝶刀刀 2022-07-27 09:15:50
的 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)


}

添加产品和正文注释


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信