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

171
Visualizações
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 Respostas
Responde à pergunta

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