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

214
Vistas
Broma: para verificar si una instancia específica de clase llama a una función en JavaScript/Typescript

Estoy probando algunos middlewares express con broma.

 it("should throw 400 error if request.body.id is null", () => { const req = { body: { id: null } } as any; const res = {} as any; const next = jest.fn(); myMiddleware(req, res, next); expect(next).toBeCalledWith(expect.any(ErrorResponse)); expect(next).toBeCalledWith( expect.objectContaining({ statusCode: 400, errCode: "error-0123-2342", message: "Field id is missing", }) ); });

mi respuesta de error:

 export class ErrorResponse extends Error { public statusCode: number; public errCode: string; constructor( statusCode: number = 500, errCode: string = "error-123-1993", message: string = "Internal Server Error" ) { super(message); this.statusCode = statusCode; this.errCode = errCode; } }

Me las arreglé para verificar si ErrorResponse con propiedad específica se llama en la next función, pero no garantiza que el objeto ErrorResponse contenga solo 3 propiedades ( statusCode , errCode , message ) si alguien cambia ErrorResponse para agregar una propiedad más, como details

Me gustaría hacer algo a continuación y garantizar que el objeto ErrorResponse contiene solo 3 propiedades ( statusCode , errCode , message ).

 it("should throw 400 error if request.body.id is null", () => { const req = { body: { id: null } } as any; const res = {} as any; const next = jest.fn(); myMiddleware(req, res, next); expect(next).toBeCalledWith( new ErrorResponse( 400, "error-3123-2332", "Field id is missing" ) ); });

¿Puedo saber si hay una manera de hacerlo en broma?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Después de una mirada superficial a la documentación de broma, parece que expect.extend podría hacer lo que desea:

 expect.extend({ toBeErrorResponse(received) { if (received instanceof ErrorResponse && Object.keys(received).length === 2) return { message: () => "expected no ErrorResponse", pass: true, }; else return { message: () => "expected an ErrorResponse", pass: false, }; } }); test("my ErrorResponse", () => { const next = jest.fn(); next(new ErrorResponse(400, "E", "M")); expect(next).toBeCalledWith(expect.toBeErrorResponse()); });
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