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

258
Visualizações
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?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

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()); });
over 4 years ago · Santiago Trujillo Relatório
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