Ejecutar un único archivo de prueba

Resuelto Elliot Larson asked hace 7 años • 15 respuestas

¿ Hay alguna manera de ejecutar ng testun 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 karmaejecuta 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.

Elliot Larson avatar Dec 14 '16 07:12 Elliot Larson
Aceptado

Descubrí que Jasmine te permite prefijar describemétodos itcon f(para enfocar): fdescribey fit. Si utiliza cualquiera de estos, Karma solo ejecutará las pruebas relevantes. Para enfocar el archivo actual, puede simplemente tomar el nivel superior describey cambiarlo a fdescribe. Si utiliza Jasmine antes de la versión 2.1, las palabras clave de enfoque son: iity 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.

Elliot Larson avatar Dec 17 '2016 05:12 Elliot Larson

Esto se puede lograr hoy en día mediante la includeopció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.

Levi avatar Jan 13 '2020 19:01 Levi

Descubrí que ng testtiene una opción adicional --includeque 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

var-bin avatar Feb 13 '2020 12:02 var-bin

Vale la pena mencionar que puedes desactivar una prueba particular sin comentar xdescribeyxit

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 fdescribeyfit

fdescribe('Hello world', () => { 
  fit('says hello', () => { 
    expect(helloWorld())
        .toEqual('Hello world!');
  });
});
DiPix avatar Sep 14 '2018 13:09 DiPix