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

170
Vistas
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 Respuestas
Responde la pregunta

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