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

145
Views
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 answers
Answer question

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 Report
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!