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

329
Vistas
problema de cobertura en el archivo nestjs roles.guard

Tengo el siguiente archivo en nestjs. Se están pasando casos de prueba para este código. pero se avecina un problema de cobertura, por lo que la canalización falló.

 import { Injectable, CanActivate, ExecutionContext, Logger } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; import { ROLES_KEY } from './roles.decorator'; import { Role } from './role.enum'; @Injectable() export class RolesGuard implements CanActivate { constructor(private reflector: Reflector) {} canActivate(context: ExecutionContext): boolean { const requiredRoles = this.reflector.getAllAndOverride<string[]>(ROLES_KEY, [ context.getHandler(), context.getClass(), ]); const { user } = context.switchToHttp().getRequest(); if (!user.role) { Logger.error('User does not have a role set'); return false; } if (user.role === Role.Admin) { return true; } if (!Array.isArray(requiredRoles) || !requiredRoles.length) { // No @Roles() decorator set, deny access as not admin return false; } if (requiredRoles.includes(Role.All)) { return true; } return requiredRoles.includes(user.role); } }

Estoy escribiendo debajo del archivo de caso de prueba para ello.

 import { createMock } from '@golevelup/ts-jest'; import { ExecutionContext } from "@nestjs/common"; import { Reflector } from "@nestjs/core"; import { RolesGuard } from "./roles.guard"; describe('RolesGuard', () => { let guard: RolesGuard; let reflector: Reflector; beforeEach(() => { reflector = new Reflector(); guard = new RolesGuard(reflector); }); it('should be defined', () => { expect(guard).toBeDefined(); }); it('should return false if user does not exist', () => { reflector.getAllAndOverride = jest.fn().mockReturnValue(true); const context = createMock<ExecutionContext>(); const canActivate = guard.canActivate(context); expect(canActivate).toBe(false); }) })

pero la cobertura no se muestra para la línea de abajo

 if (user.role === Role.Admin) { return true; } if (!Array.isArray(requiredRoles) || !requiredRoles.length) { // No @Roles() decorator set, deny access as not admin return false; } if (requiredRoles.includes(Role.All)) { return true; } return requiredRoles.includes(user.role);

¿podría ayudarme en lo mismo? No soy capaz de entender cómo manejar la cobertura de estas líneas. Estoy invocando el método pero aún se muestra.

También hice un caso de prueba de pregunta similar para el archivo de protección de roles en nestjs

about 4 years ago · Santiago Gelvez
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