Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

327
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!