小编ema*_*tta的帖子

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

我的 Micronaut 文件上传控制器有以下签名(Java 语言):

@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("application/json")
@Post
public Single<IdType> uploadFile(Publisher<CompletedFileUpload> files)
Run Code Online (Sandbox Code Playgroud)

我有以下可用的 Spock 测试(在 Groovy 中):

@MicronautTest
class 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
  }
}
Run Code Online (Sandbox Code Playgroud)

我想改变测试的是:HttpClient我想使用这样的东西,而不是使用在测试顶部注入的标准:

@Inject
UploadClient uploadClient

@Client(value …
Run Code Online (Sandbox Code Playgroud)

java groovy multipartform-data spock micronaut

4
推荐指数
1
解决办法
2046
查看次数

标签 统计

groovy ×1

java ×1

micronaut ×1

multipartform-data ×1

spock ×1