unitarias spec rails pruebas describe ruby ruby-on-rails-3 minitest

ruby - spec - ¿Es posible ejecutar una única prueba en MiniTest?



pruebas unitarias ruby (11)

Estoy buscando una funcionalidad similar a rspec ruta / a / archivo.rb -l 25

¡Sip! Usa la gema "m" de Nick Quaranto . Con eso puedes decir:

m spec/my_spec.rb:25

Puedo ejecutar todas las pruebas en un solo archivo con:

rake test TEST=path/to/test_file.rb

Sin embargo, si quiero ejecutar solo una prueba en ese archivo, ¿cómo lo haría?

Estoy buscando una funcionalidad similar a:

rspec path/to/test_file.rb -l 25



El comando debería ser:

% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"


En realidad puedes ejecutar solo el nombre o incluso el número:

-n, --name PATTERN Filter run on /pattern/ or string.

p.ej:

ruby spec/stories/foo_spec.rb --name 3 FAIL (0:00:00.022) test_0003_has foo Expected: "foo" Actual: nil

Ver: https://github.com/seattlerb/minitest


Esta es una de las cosas que me molestan acerca de la string name definition la string name definition en las pruebas.

Cuando tengas:

def test_my_test end

usted siempre sabe cómo se nombra su prueba para que pueda ejecutarla así:

ruby my_test -n test_my_test

Pero cuando tienes algo como:

it "my test" do end

nunca está seguro de cómo esta prueba recibe el nombre interno, por lo que no puede usar la opción -n solo directamente.

Para saber cómo se denomina internamente esta prueba, solo tiene una opción: ejecutar todo el archivo para tratar de descubrir buscando en los registros.

Mi solución es (temporalmente) agregar algo al nombre de prueba muy único como:

it "my test xxx" do end

y luego use la versión RegEx del parámetro ''-n'' como:

ruby my_test.rb -n /xxx/


Has probado:

ruby path/to/test_file.rb --name test_method_name


Hay 2 formas de hacerlo:

  1. Ejecute las pruebas ''manualmente'' (vea la respuesta de Andrew Grimm).
  2. Hack Rake::TestTask objetivo para utilizar un cargador de pruebas diferente.

Rake::TestTask (de rake 0.8.7) teóricamente puede pasar opciones adicionales a MiniTest::Unit con una opción de línea de comando "TESTOPTS=blah-blah" , por ejemplo:

% rake test TEST=test/test_foobar.rb TESTOPTS="--name test_foobar1 -v"

En la práctica, la opción --name (un filtro para los nombres de prueba) no funcionará, debido a las partes internas del rake. Para solucionarlo, tendrás que escribir un pequeño parche de mono en tu Rakefile:

# overriding the default rake tests loader class Rake::TestTask def rake_loader ''test/my-minitest-loader.rb'' end end # our usual test terget Rake::TestTask.new {|i| i.test_files = FileList[''test/test_*.rb''] i.verbose = true }

Este parche requiere que crees una test/my-minitest-loader.rb archivo test/my-minitest-loader.rb :

ARGV.each { |f| break if f =~ /^-/ load f }

Para imprimir todas las opciones posibles para Minitest, escriba

% ruby -r minitest/autorun -e '''' -- --help



Puede usar esto para ejecutar un solo archivo:

rake test TEST=test/path/to/file.rb

Yo también utilicé

ruby -I"lib:test" test/path/to/file.rb

para una mejor visualización.



Si está utilizando Turn gem con minitest, solo asegúrese de usar la opción Turn.config.pattern ya que Turn Minitest runner no respeta la opción --name en ARG.