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

163
Views
Problema con la prueba de mutación de la aplicación expressjs (mutador Stryker)

Hice una aplicación express que es básicamente un RESTAPI y escribí pruebas en mocha para la aplicación. Ahora quería probar la mutación de mi aplicación, pero me encontré con un problema. Mi aplicación escucha el puerto 8000 a través del comando app.listen(8000) de express y mis pruebas prueban la aplicación a través de las rutas que configuré (por ejemplo, localhost:8000/test). El problema que tengo cuando trato de probar la mutación con stryker es que cada mutante creado intenta acceder al puerto 8000 al mismo tiempo durante la prueba y los mutantes mueren debido a "EADDRINUSE: dirección ya en uso :::8000", lo que da como resultado Puntuación de mutación del 100 %. Ya intenté editar el script de prueba de "mocha" a "mocha --exit" en package.json, así como cerrar el servidor después de que finaliza la última prueba.

Creo que el error podría reproducirse fácilmente al hacer una API simple con express, luego escribir pruebas que usen las rutas e intentar probar la mutación con stryker. ¿Hay alguna solución para este problema, cualquier ayuda es bienvenida!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

También hay una opción en Stryker para tener las pruebas concurrentes (simultaneidad) que puede configurar en 1, para que el motor de prueba solo ejecute 1 prueba a la vez. Esto será lento para la prueba, pero debería funcionar.

Estoy usando NestJS para el marco de mi aplicación API con Express. Desde allí, puedo iniciar la aplicación internamente, utilizando el módulo de prueba de NestJS. ¿Tienes algo parecido?

En mi caso, puedo iniciar la aplicación de forma aislada en los métodos beforeAll() y luego ejecutar pruebas.

 beforeAll(async () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [AppModule], }).compile(); app = moduleFixture.createNestApplication(); await app.init(); }); ... it('/bad (GET) address should be Not Found', async () => { const ResponseData$ = await request(app.getHttpServer()).get('/bad'); expect(ResponseData$.body.statusCode).toBe(404); expect(ResponseData$.body.message).toBe('Cannot GET /bad'); });

Esta es una prueba simple, pero app.getHttpServer() es la clave que inicia una llamada interna en mi prueba, sin necesidad de que la aplicación se ejecute en el puerto, ya que el módulo de prueba lo admite.

Esto me permite ejecutar todas mis pruebas con ejecución paralela y también permite que Stryker se ejecute en paralelo.

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!