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

155
Visualizações
Cómo probar si un método devuelve una matriz de una clase en Jest

Voy a probar un método (usando el lenguaje TypeScript) para asegurarme de que devuelve una matriz de una clase.

Aquí está mi código:

 it('should return an array of Entity class', async () => { expect(await service.getAll()).toBeInstanceOf(Entity[]); });

Pero muestra el siguiente mensaje de error en [] :

Una expresión de acceso a elementos debe tomar un argumento.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Dado que las pruebas de Jest son pruebas de tiempo de ejecución , solo tienen acceso a la información de tiempo de ejecución. Está tratando de usar un tipo, que es información en tiempo de compilación. TypeScript ya debería estar haciendo el aspecto de tipo de esto por usted. (Más sobre esto en un momento.)

El hecho de que las pruebas solo tengan acceso a la información del tiempo de ejecución tiene un par de ramificaciones:

  • Si es válido que getAll devuelva una matriz vacía (porque no hay ninguna entidad para obtener), la prueba no puede decirle si la matriz habría tenido elementos de Entity si no hubiera estado vacía. Todo lo que puede decirte es que tiene una matriz.

  • En el caso no vacío, debe verificar cada elemento de la matriz para ver si es una Entity . Has dicho que Entity es una clase, no solo un tipo, así que eso es posible. No soy un usuario de Jest (debería serlo), pero no parece tener una prueba específica para esto; Sin embargo, tiene que ser toBeTruthy , y podemos usar each para decirnos si every elemento es una Entity :

     it('should return an array of Entity class', async () => { const all = await service.getAll() expect(all.every(e => e instanceof Entity)).toBeTruthy(); });

    Sin embargo, tenga en cuenta que todas las llamadas a every en una matriz vacía devuelven true , por lo que nuevamente, el problema de la matriz vacía surge.

Si sus pruebas de Jest están escritas en TypeScript, puede mejorar eso asegurándose de que TypeScript pruebe el tipo de tiempo de compilación del valor de retorno de getAll :

 it('should return an array of Entity class', async () => { const all: Entity[] = await service.getAll() // ^^^^^^^^^^ expect(all.every(e => e instanceof Entity)).toBeTruthy(); });

TypeScript se quejará de esa asignación en tiempo de compilación si no es válida, y Jest se quejará en tiempo de ejecución si ve una matriz que contiene un objeto que no es Entity .


Pero jonrsharpe tiene un buen punto : esta prueba puede no ser útil en comparación con las pruebas de valores específicos que deberían estar allí.

about 4 years ago · Juan Pablo Isaza 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