rails matchers ruby ruby-on-rails-3 testing rspec rspec2

ruby - matchers - ¿Cómo obtener rspec-2 para obtener el seguimiento completo asociado con una falla de prueba?



shoulda matchers (6)

Debe ejecutar rspec con la opción -b para ver trazas inversas completas

En este momento, si ejecuto mi suite de prueba usando las rake spec un error:

1) SegmentsController GET ''index'' should work Failure/Error: get ''index'' undefined method `locale'' for # # ./spec/controllers/segments_controller_spec.rb:14: in `block (3 levels) in ''

Esto es normal ya que tengo un error :)

El problema es que la traza no es muy útil. Sé que se rompió en segments_controller_spec.rb , línea 14, pero aquí es donde llamo la prueba:

### segments_controller_spec.rb:14 get ''index''

Preferiría que la línea real se rompa y el rastro completo, no la parte en la carpeta de especificaciones.

Correr con --trace no ayuda.


Esto también funcionará:

# rails_helper.rb RSpec.configure do |config| config.full_backtrace = true end


No sé cómo mostrar el error del controlador en rspec. A veces aparece, pero no sé qué condiciones hacen que aparezca. Aquí hay una manera de ver el error bastante rápido:

Abra otra sesión de terminal y ejecute:

tail -f log/test.log

Luego regrese a la sesión de la terminal y ejecute solo la especificación que tuvo el error:

bin/rspec -b spec/requests/posts/index_spec.rb

Vuelva a la cola del registro y debería ver el error, con suerte sin demasiadas cosas que lo rodeen (porque ejecutó la prueba de falla por sí mismo).


Otra alternativa (más fácil) es editar el archivo .rspec y agregar la opción de .rspec . Debería verse algo como esto:

--colour --backtrace

Eso te dará la traza inversa completa. Espero que esto ayude.


Otro enfoque es borrar todos los patrones de exclusión de trazas en spec_helper.rb . Me gusta más esta solución, ya que puedo mantener todas las configuraciones de RSpec en un solo lugar y deshacerme del .rspec file o explicito --backtrace en .travis.yml .

# spec_helper.rb RSpec.configure do |config| config.backtrace_exclusion_patterns = [] end


Una opción más cuando todo lo demás falla es simplemente agregar un bloque de rescate e imprimir la pila, intentar o agregar una instrucción de paginación vinculante allí y usar show-stack .

rescue Exception => e puts "" puts e.backtrace puts ""