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

199
Vistas
¿Por qué la cobertura de código es inadecuada para mi controlador?

Tengo el siguiente método en mi controlador. ¿Cómo puedo probarlo? La cobertura de la anotación está fallando. En realidad, no puedo definir el código para la cobertura en el archivo jest.

¿Qué parámetro debo agregar en mi archivo de prueba y pasar para cubrirlo?

 @Post('upload') @UseInterceptors( FileInterceptor('image', { storage: diskStorage({ destination: './uploads', filename(_, file, callback) { const randomName = Array(32) .fill(null) .map(() => Math.round(Math.random() * 16).toString(16)) .join(''); return callback(null, `${randomName}${extname(file.originalname)}`); }, }), }) ) uploadFile(@UploadedFile() file) { return { url: `http://localhost:2300/api/inventory/uploads/${file.filename}`, originalFileName: `${file.originalname}`, }; }

Está funcionando perfectamente. Escribí este caso de prueba de broma para lo mismo.

 it('Single file upload', async () => { const response = await controller.uploadFile(mockFile); const fileService = new InventoryController(service); expect(response).toBeTruthy(); expect(response).toStrictEqual( expect.objectContaining({ originalFileName: expect.any(String), url: expect.any(String), }), ); });

Esto es exitoso pero la cobertura está fallando para esta línea.

 @UseInterceptors( FileInterceptor('image', { storage: diskStorage({ destination: './uploads', filename(_, file, callback) { const randomName = Array(32) .fill(null) .map(() => Math.round(Math.random() * 16).toString(16)) .join(''); return callback(null, `${randomName}${extname(file.originalname)}`); }, }), }) )
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo que haría aquí si la cobertura de código es una necesidad absoluta en todas las líneas con pruebas unitarias, es mover la función de nombre de filename a un archivo separado que exporte el método para que pueda probarse directamente.

Durante las pruebas unitarias, los potenciadores no se llaman, solo se crean, por lo que no obtendrá ninguna otra cobertura que no sea el tipo de cobertura inicial "sí, este decorador funciona". Para esta devolución de llamada interna, necesitará una función separada.

La otra opción, si la cobertura de código no es una métrica tan importante, sería probar esto en una prueba e2e. De esa manera, sabrá con certeza que esto funciona según lo previsto.

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