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

164
Vistas
¿Cómo manejar la carga de archivos si FormData cuando se prueba con Cypress?

Estoy usando VueJS y Cypress. Tengo un modal donde envío un FormData con diferentes rellenos y un archivo:

 var formData = new FormData(); formData.append("document_file", this.documentFile); formData.append("comments", this.comments.value); ...

La forma en que lo subo:

 this.$http.post('http://localhost:8081/api/upload',formData,{emulateJSON: true},{ header:{ "Content-Type":"multipart/form-data" }, }).then(function(response) { // ... Code }).catch((err) => { // .. Code }); }

Quiero usar Cypress para probar los parámetros. Ahora, cuando no uso el archivo del documento en formData , tengo los siguientes métodos para analizar los multipart/form-data; boundary=--- :

 function parse(request) { console.log("request"); console.log(request); const headers = request.headers; const body = request.body; const content_type = headers['content-type']; expect(content_type, 'boundary').to.match(/^multipart\/form-data; boundary=/); const boundary = content_type.split('boundary=')[1]; const values = p(boundary, body); return values; } function p(boundary, body) { expect(boundary, 'boundary').to.be.a('string'); expect(body, 'body').to.be.a('string'); const parts = body.split(`--${boundary}`).map((s) => s.trim()).filter((s) => s.startsWith('Content-Disposition: form-data;')); const result = {}; parts.forEach((part) => { const lines = part.split(/\r?\n/g); const key = lines[0].match(/name="(.+)"/)[1]; result[key] = (lines.length >= 2) ? lines[2].trim() : ""; }); return result; }

Que funcionan muy bien. Pero cuando subo el archivo, obtengo un request.body diferente:

ingrese la descripción de la imagen aquí

La forma en que estoy tratando de probar:

 cy.get('@createDocument').then((interception) => { assert.isNotNull(interception); const values = parse(interception.request); assert.isTrue(values.comments === ""); });

¿Cómo puedo manejar esto?

about 4 years ago · Juan Pablo Isaza
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