what rails ruby-on-rails ruby testing rspec

ruby-on-rails - what - rails 5 rspec



Obtener el nombre completo de la prueba RSpec desde dentro de un bloque before(: each) (7)

RSpec le permite obtener el nombre del método de prueba actual en un bloque before (: each), haciendo lo siguiente:

Spec::Runner.configure do |config| config.before :each do |x| x.method_name # returns ''should be cool'' end end

Esto es para una prueba como:

require File.expand_path(File.dirname(__FILE__) + ''/../spec_helper'') describe ''Hello world'' do it ''should be cool'' do # test code end end

¿Sería posible obtener el nombre completo de la prueba con lo que está describiendo, (alias ''Hello World debería ser genial'') en el bloque anterior?


En RSpec 2.0 puedes usar (no estoy seguro si es la mejor manera pero funciona)

x.example.metadata[:example_group][:full_description]

En cuanto a RSpec 1.XI no lo sé. Y eso es probablemente lo que estás pidiendo ...


Encontré la respuesta. Resulta que solía haber un método llamado full_description en x que haría exactamente lo que yo quería, sin embargo, estaba en desuso. Lo siguiente produce la cadena que quiero:

"#{x.class.description} #{x.description}"

Referencia


o puede usar los métodos directamente:

x.example.description x.example.file_path

etc.


en rspec 2.12.0 "#{x.class.description} #{x.example.description}" funciona



Puedes obtener el archivo también. Usé esto para localizar problemas con mis especificaciones de poltergeist:

config.before(:each, js: true) do |s| md = s.example.metadata x = md[:example_group] Rails.logger.debug "==>>> #{x[:file_path]}:#{x[:line_number]} #{md[:description_args]}" end

Tenga en cuenta que este es el número de línea del grupo de ejemplo (no tan útil), pero la descripción del ejemplo actual, que debería ayudarlo a determinar cuál se está ejecutando.

== >>> ./spec/features/editing_profiles_spec.rb:3 ["El usuario edita un perfil"]


Con Rspec 3.3 funciona así:

RSpec.configure do |config| config.before :example do |x| Rails.logger.debug("=== running spec example #{x.metadata[:full_description].inspect}") end end