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

385
Vistas
¿Por qué la tubería de validación de NestJS falla en la prueba unitaria cuando falta el campo pero skipMissingProperties es verdadero?

Tengo una tubería de validación personalizada en NestJS donde configuro skipMissingProperties en true , por lo que cuando no envío un campo que está decorado con IsDefined , la validación no generará una excepción. Por ejemplo, si el DTO es:

 class ModelDTO { @IsDefined() @IsNumber() requiredNumber1: number; @IsDefined() @IsNumber() requiredNumber2: number; }

y el objeto real que acepta la tubería de validación es:

 { requiredNumber2: 1 }

no falla (guardo un registro en este caso).

Cuando realizo las pruebas de e2e, funciona bien: puedo ver que la tubería de validación continúa hasta el controlador y que obtengo el registro deseado.

Por alguna razón, cuando realizo pruebas unitarias, el mismo caso falla con la excepción Bad Request (400), el mensaje de error es requiredNumber2 should not be null or undefined .

¿Por qué falla la prueba unitaria mientras que el e2e funciona bien? (Por cierto, en las pruebas manuales, la tubería también funciona bien).

EDITAR: la tubería es:

 class CustomValidationPipe extends ValidationPipe { const OPTIONS = { transform: true, skipMissingProperties: true, whitelist: true, forbidNonWhitelisted: false, forbidUnknownValues: true, transformOptions: { enableImplicitConversion: true, } } constructor() { super(OPTIONS); } async transform(value, metadata) { const objectToValidate = plainToClass( metadata.metatype, cloneDeep(value) ); const errors = await validate( objectToValidate, { ...OPTIONS, skipMissingProperties: false, forbidNonWhitelisted: true, } ) if (errors.length > 0) { // log } return super.transform(value, metadata); } }
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