Tengo la compilación del proyecto Angular2 con Angular-CLI (beta 20).
¿Hay alguna manera de ejecutar pruebas contra un solo archivo de especificaciones seleccionado?
Solía tener un proyecto basado en el inicio rápido de Angular2 y podía agregar especificaciones manualmente al archivo jasmine. Pero no sé cómo configurar esto fuera de las pruebas de karma o cómo limitar las pruebas de karma a archivos específicos con compilaciones Angular-CLI.
,
Cada uno de sus .spec.ts
archivos tiene todas sus pruebas agrupadas en describe
bloques como este:
describe('SomeComponent', () => {...}
Puede ejecutar fácilmente solo este bloque único, anteponiendo el describe
nombre de la función con f
:
fdescribe('SomeComponent', () => {...}
Si tiene esa función, no describe
se ejecutarán otros bloques.
Por cierto. puede hacer algo similar con it
=> fit
y también hay una versión de "lista negra": x
. Asi que:
fdescribe
yfit
hace que solo las funciones marcadas de esta manera se ejecutenxdescribe
yxit
hace que todas las funciones excepto las marcadas de esta manera se ejecuten
,
Configurar test.ts
el archivo dentro de la src
carpeta:
Reemplácelo /\.spec\.ts$/
con el nombre del archivo que desea probar. Por ejemplo:/app.component\.spec\.ts$/
Esto ejecutará la prueba solo para app.component.spec.ts
.
,
Puede probar solo un archivo específico con Angular CLI (el ng
comando) de esta manera:
Hay más documentos en https://angular.io/cli/test
Tenga en cuenta que si bien esto funciona para archivos de biblioteca independientes, no funcionará para componentes angulares/servicios/etc. Esto se debe a que los archivos angulares tienen dependencias con otros archivos (es decir, src/test.ts
en Angular 7). Lamentablemente, la --main
bandera no acepta múltiples argumentos.
,
Esto funcionó para mí en todos los casos:
Sin embargo, generalmente obtuve "TypeError: Cannot read property 'ngModule' of null" para esto:
Versión de @angular/cli 10.0.4
,
usar--include
es trabajar con--include
Lo intenté --main
pero muestra todos los resultados fallidos mientras no lo es. Creo --main
que cambiará el test.ts
archivo principal.
,
Si desea poder controlar qué archivos se seleccionan desde la línea de comando, logré hacer esto para Angular 7.
En resumen, debe instalar @angular-devkit/build-angular:browser
y luego crear un complemento de paquete web personalizado para pasar la expresión regular del archivo de prueba. Por ejemplo:
angular.json : cambie el generador de pruebas @angular-devkit/build-angular:browser
y configure un archivo de configuración personalizado:
extra-webpack.config.js : cree una configuración de paquete web que lea la expresión regular desde la línea de comando:
test.ts – editar la especificación
Luego use lo siguiente para anular el valor predeterminado:
Documenté la historia de fondo aquí , disculpas de antemano por los tipos y los enlaces erróneos. Crédito a la respuesta anterior de @ Aish-Anu por indicarme la dirección correcta.
,
En una terminal bash, me gusta usar el doble guión. Con VS Code, puede hacer clic con el botón derecho en el archivo de especificaciones en el explorador o en la pestaña abierta. Luego seleccione 'Copiar ruta relativa'. Ejecute el siguiente comando pegando la ruta relativa desde el portapapeles.
El doble guión señala el final de las opciones de comando para npm t
y pasa cualquier cosa después de eso al siguiente comando que apunta a ng t
. No requiere ninguna modificación y rápidamente da los resultados deseados.
,
Esto me funciona en Angular 7. Se basa en la opción principal del comando ng. No estoy seguro de si esta opción no está documentada y posiblemente esté sujeta a cambios, pero me funciona. Puse una línea en mi archivo package.json en la sección de scripts. Allí, usando la opción principal con el comando ng test, especifico la ruta al archivo .spec.ts que quiero ejecutar. Por ejemplo
Puede ejecutar la secuencia de comandos al igual que ejecuta cualquiera de dichas secuencias de comandos. Lo ejecuto en Webstorm haciendo clic en "prueba 1" en la sección npm.
,
Una forma simple de hacer esto es comenzar describe y todo con f .
,
Resolví este problema por mí mismo usando grunt. Tengo el script gruñido a continuación. Lo que hace el script es tomar el parámetro de la línea de comando de la prueba específica para ejecutar y crea una copia de test.ts y coloca este nombre de prueba específico allí.
Para ejecutar esto, primero instale grunt-cli usando:
Ponga las siguientes dependencias gruñidas en su paquete.json:
Para ejecutarlo, guarde el siguiente archivo grunt como Gruntfile.js en su carpeta raíz. Luego, desde la línea de comando, ejecútelo como:
Esto ejecutará app.component.spec.ts.
El archivo Grunt es el siguiente:
,
Agregando a esto para personas como yo que estaban buscando una manera de ejecutar una sola especificación en Angular y encontraron este SO.
De acuerdo con los últimos documentos de Angular (v9.0.6 al momento de escribir), el ng test
comando tiene una --include
opción en la que puede especificar un directorio de *.spec.(ts|tsx)
archivos o solo un .spec.(ts|tsx)
archivo en sí.
,
Solo se necesita un pequeño cambio en test.ts
el archivo dentro de la carpeta src:
Aquí test-example
está el nombre exacto del archivo que necesitamos para ejecutar
De la misma manera, si necesita probar el archivo de servicio, solo puede reemplazar el nombre del archivo como "/test-example.service"
,
Si está trabajando en un proyecto que usa arquitectura monorepo, debe escribir el nombre del proyecto después del script en la línea de comando.
Por ejemplo:
,
Desde angular-cli puede ejecutar este comando y la prueba incluirá solo el archivo de especificaciones que desee.
ng test: incluye la ruta del archivo de especificaciones
0 Comentarios