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 ""