Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

333
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda