Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

350
Vistas
El objeto FormData está vacío a pesar de que se está configurando al intentar enviar un archivo pdf como una solicitud POST de FormData de varias partes en Cypress

Quiero enviar el archivo pdf como una solicitud POST.

La API acepta @RequestPart y @RequestParam :

 @RequestPart("file") MultipartFile file; @RequestParam(value = "document-types", required = false) Set<String> documentTypes;

Traté de hacerlo de esa manera:

 it('test', () => { cy.fixture(pdfFilePath, "binary").then(file => { const data = new FormData(); data.set('file', file); data.set('document-types', 'New Type'); cy.request({ method: "POST", url: '/api/v4/documents', headers: { accepts: "multipart/form-data", authorization: authString }, body: data }).then((response) => { expect(response.status).to.eq(200) }); }); });

Y cuando ejecuto esto me sale:

Status: 400 - Bad Request

En Cypress veo que el cuerpo de la solicitud enviada está vacío: Body: {}

ingrese la descripción de la imagen aquí

Cuando traté de depurar el código, veo que data se envían vacíos como se ve en la captura de pantalla adjunta:

ingrese la descripción de la imagen aquí

Y me pregunto por qué porque trato de configurar los data siguiendo estos pasos en las líneas 154 y 155 en la captura de pantalla anterior:

 data.set('file', file); data.set('document-types', 'New Type');

¿Que me estoy perdiendo aqui?

Versión de ciprés: 9.0.0

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

debe agregar formData, el código a continuación es solo un ejemplo:

 const formData = new FormData() formData.append('file', files[0]) formData.append('name', files[0].name)
about 4 years ago · Juan Pablo Isaza Denunciar

0

No está vacío, debe utilizar data.entries() para ver el contenido.

Parece que la función cy.request() intenta convertir el objeto FormData en un objeto JSON, lo cual es incorrecto.

De la documentación de ciprés también debe hacer uso de la form: true .

Referencias:

  • https://developer.mozilla.org/en-US/docs/Web/API/FormData
  • https://xhr.spec.whatwg.org/#interface-formdata
about 4 years ago · Juan Pablo Isaza Denunciar

0

Como @Christopher mencionó en la respuesta, data no estaban vacíos. Tuve que usar data.entries() o simplemente data.get() para ver el contenido.

Pero de todos modos, no pude hacer que ese código funcionara.

En cambio, seguí el enfoque presentado en este video de YouTube y funcionó.

 it.only('test', () => { function form_request(method, url, formData, done) { const xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.setRequestHeader( "Authorization", "Basic YWRtaW46YWRtaW4=" ); xhr.onload = function () { done(xhr); }; xhr.onerror = function () { done(xhr); }; xhr.send(formData); } const fileName = "PdfFileName.pdf"; const method = "POST"; const url = '/api/v4/documents'; const fileType = "application/pdf" cy.fixture(pdfFilePath, "binary") .then((txtBin) => Cypress.Blob.binaryStringToBlob(txtBin)) .then((blob) => { const formData = new FormData(); formData.append("file", blob, fileName); formData.append("document-types", "New Type"); form_request(method, url, formData, function (response) { expect(response.status).to.eq(200); }) }); })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda