Usando @Client en la prueba de Spock para HTTP multiparte Carga de archivos en Micronaut

emazzotta:

Tengo la siguiente firma para mi controlador de carga de archivos Micronaut (en Java):

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

Y tengo la siguiente prueba Spock de trabajo (en 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
  }
}

Lo que me gustaría cambiar de la prueba es: En lugar de utilizar el estándar HttpClientque se inyecta en la parte superior de la prueba, me gustaría usar algo como esto:

@Inject
UploadClient uploadClient

@Client(value = "/v1/mailings")
static interface UploadClient {

  @Post
  HttpResponse postFile(...)
}

Mi pregunta es, ¿qué firma, hace el postFilede la necesidad del cliente? ¿Seguiré siendo capaz de utilizar MultipartBodypero de alguna manera convertirlo en un CompletedFileUpload? Realmente no estoy seguro de cómo resolver esto y yo soy un principiante cuando se trata de RxJava.

Cualquier ayuda es apreciada.

Puneet Behl:

Por favor, intente lo siguiente:

@Client(value ="/v1/upload")
static interface UploadClient {

  @Post(uri = "/mailings", produces = MediaType.MULTIPART_FORM_DATA)
  HttpResponse postFile(@Body MultipartBody file)

}

Agregar produce y la anotación del cuerpo

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=207750&siteId=1
Recomendado
Clasificación