Ejecutar un único archivo de prueba
¿ Hay alguna manera de ejecutar ng test
un solo archivo en lugar de todo el conjunto de pruebas? Idealmente, me gustaría obtener el ciclo de retroalimentación más rápido posible cuando estoy editando un archivo, pero karma
ejecuta todo el conjunto en cada guardado, lo cual es un poco lento cuando creas un conjunto de pruebas lo suficientemente grande.
Esto es diferente de Cómo ejecutar solo una especificación de prueba con angular-cli en que esa pregunta trata sobre la ejecución de una especificación individual. Se trata de ejecutar un archivo individual. La solución implica la misma característica de especificación de Jasmine, pero la naturaleza de la pregunta es ligeramente diferente.
Descubrí que Jasmine te permite prefijar describe
métodos it
con f
(para enfocar): fdescribe
y fit
. Si utiliza cualquiera de estos, Karma solo ejecutará las pruebas relevantes. Para enfocar el archivo actual, puede simplemente tomar el nivel superior describe
y cambiarlo a fdescribe
. Si utiliza Jasmine antes de la versión 2.1, las palabras clave de enfoque son: iit
y ddescribe
.
Este código de ejemplo ejecuta solo la primera prueba:
// Jasmine versions >/=2.1 use 'fdescribe'; versions <2.1 use 'ddescribe'
fdescribe('MySpec1', function () {
it('should do something', function () {
// ...
});
});
describe('MyOtherSpec', function () {
it('should do something else', function () {
// ...
});
});
Aquí está la documentación de Jasmine sobre Focusing Specs y aquí hay un artículo SO relacionado que proporciona soluciones reflexivas adicionales.
Esto se puede lograr hoy en día mediante la include
opción.
https://angular.io/cli/test#options
Es una coincidencia global, por ejemplo:
ng test --include='**/someFolder/*.spec.ts'
No puedo encontrarlo en las notas de la versión 8.1.0 , pero @Swoox menciona a continuación que esta es una característica posterior a la versión CLI 8.1.0
. Gracias por descubrir eso.
Descubrí que ng test
tiene una opción adicional --include
que puedes usar para poder ejecutar la prueba para un solo archivo, para un directorio en particular o para un grupo de archivos:
// one file
npm run test -- --include src/app/components/component/component-name.component.spec.ts
// directory or bunch of files
npm run test -- --include src/app/components
ng cli documentos
Vale la pena mencionar que puedes desactivar una prueba particular sin comentar xdescribe
yxit
xdescribe('Hello world', () => {
xit('says hello', () => {
expect(helloWorld())
.toEqual('Hello world!');
});
});
Y como alguien ya dijo, si quieres centrarte en alguna prueba en ese momento fdescribe
yfit
fdescribe('Hello world', () => {
fit('says hello', () => {
expect(helloWorld())
.toEqual('Hello world!');
});
});