Karma: Ejecutar un único archivo de prueba desde la línea de comandos


Así que, he estado buscando por todas partes para esto, encontré respuestas "similares" aquí, pero no exactamente lo que quiero.

Ahora mismo si quiero probar un solo archivo con karma, tengo que hacer fit(), fdescribe() en el expediente en cuestión...

Sin embargo, lo que sí quiero es poder llamar a karma, con el archivo de configuración, y dirigirlo a un archivo específico, por lo que no necesito modificar el archivo en absoluto, es decir:

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

Es posible hacer esto? ¿O con algún ayudante? (usando grunt o ¿gulp?)

Author: Gonçalo Vieira, 2015-03-19

3 answers

Primero necesitas iniciar karma server con

karma start

Luego, puede usar grep para filtrar una prueba específica o describir un bloque:

karma run -- --grep=testDescriptionFilter
 46
Author: bvaughn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-22 09:44:30

Aunque --files ya no es compatible, puede usar una variable env para proporcionar una lista de archivos:

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

Luego en CLI:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run
 12
Author: Yuriy Kharchenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-21 09:07:34

Esta opción ya no está soportada en versiones recientes de karma:

Véase https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054

El array files se puede redefinir usando la CLI como tal:

karma start --files=Array("test/Spec/services/myServiceSpec.js")

O escapado:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

Referencias

 6
Author: Paul Sweatte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-27 13:45:58