Búsqueda de sitios web

angular - Karma ng test no muestra errores de compilación en la consola


Estoy usando Karma con Jasmine para ejecutar pruebas en mi proyecto de Angular 7. Sin embargo, me estoy encontrando con un escenario muy irritante, donde si hay errores en los archivos .spec.ts (o .ts), ejecutar ng test no muestra estos errores en la consola.

Por ejemplo, si tengo una importación duplicada en un archivo:

import { DatepickerModule } from 'ngx-bootstrap';
import { DatepickerModule } from 'ngx-bootstrap';

@Component({...})
export class MyComponent { ... }

el ng serve normal informa esto como un error. Sin embargo, ejecutar ng test no siempre hace esto, simplemente no logra ejecutar las pruebas, abriendo Chrome con una página en blanco, diciendo 'Esperando por localhost...', y eventualmente simplemente falla:

> ng test
10 % building modules 3 / 3 modules 0 active30 08 2019 11: 28: 31.213: WARN[karma]: No captured browser, open http://localhost:9876/
30 08 2019 11: 28: 31.296: INFO[karma - server]: Karma v4.2.0 server started at http://0.0.0.0:9876/
30 08 2019 11: 28: 31.297: INFO[launcher]: Launching browsers Chrome with concurrency unlimited
10 % building modules 4 / 5 modules 1 active ...b\projects\myProject\src\styles.scss30 08 2019 11: 28: 31.720: INFO[launcher]: Starting browser Chrome
30 08 2019 11: 29: 31.722: WARN[launcher]: Chrome have not captured in 60000 ms, killing.
30 08 2019 11: 29: 31.994: INFO[launcher]: Trying to start Chrome again(1 / 2).
30 08 2019 11: 30: 31.996: WARN[launcher]: Chrome have not captured in 60000 ms, killing.
30 08 2019 11: 30: 32.277: INFO[launcher]: Trying to start Chrome again(2 / 2).
30 08 2019 11: 31: 32.279: WARN[launcher]: Chrome have not captured in 60000 ms, killing.
30 08 2019 11: 31: 32.530: ERROR[launcher]: Chrome failed 2 times(timeout).Giving up.

Esto hace que sea muy difícil averiguar por qué Karma no lanza las pruebas, y simplemente abre una ventana en blanco, con el mensaje críptico Chrome no se ha capturado en 60000 ms, matando.

He intentado configurar el nivel de registro desde la documentación del archivo de configuración, pero ni siquiera parece llegar a este punto donde se carga karma, porque la compilación real falla antes de eso (creo).

¿Cómo puedo hacer que la compilación informe estos errores en los archivos spec.ts?

Editar

Ejecutar el comando con --watch=false informa los errores de compilación. De manera similar, si realizas un cambio en un archivo spec, causando que se active la reconstrucción (si tienes --watch=true), el error de compilación también se imprime en la consola a través del cli.

Respuesta #1

Esta no es la solución ideal, pero esto funciona a partir de la pregunta original:

Ejecutar el comando con --watch=false informa los errores de compilación. De manera similar, si haces un cambio en un archivo de especificación, provocando que se active la reconstrucción (si tienes --watch=true), el error de compilación también se imprime en la consola a través del CLI.

Artículos relacionados