/ / ¿Cómo obtener rspec-2 para dar el seguimiento completo asociado con una falla de prueba? - ruby, ruby-on-rails-3, testing, rspec, rspec2

¿Cómo obtener rspec-2 para dar el seguimiento completo asociado con una falla de prueba? - ruby, ruby-on-rails-3, testing, rspec, rspec2

Ahora mismo si ejecuto mi prueba usando rake spec Me sale un error:

1) SegmentsController GET "index" debería funcionar Error / Error: obtener "índice" método indefinido `locale" para # # ./spec/controllers/segments_controller_spec.rb:14: en `bloque (3 niveles) en"

Esto es normal ya que tengo un error :)

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

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

Preferiría tener la ruptura de línea real y la traza completa, no la parte en la carpeta de especificaciones.

Corriendo con --trace no ayuda

Respuestas

237 para la respuesta № 1

Debes ejecutar rspec con -b Opción para ver retrocesos completos.


29 para la respuesta № 2

Otra alternativa (más fácil) es editar el .rspec archivo, y agregue el backtrace opción. Debería verse algo así:

--colour
--backtrace

Eso te dará el retroceso completo. Espero que esto ayude.


3 para la respuesta № 3

Esto también funcionará:

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

2 para la respuesta № 4

Otro enfoque es borrar todos los patrones de exclusión de retroceso en spec_helper.rb. Me gusta más esta solución porque puedo mantener todas las configuraciones de RSpec en un solo lugar y deshacerme de .rspec file o explícito --backtrace en .travis.yml.

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

0 para la respuesta № 5

Una opción más cuando todo lo demás falla es simplemente agregar un bloque de rescate e imprimir el intento de pila o agregar una declaración de palanca de palanca allí y usar show-stack.

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

0 para la respuesta № 6

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

Abre otra sesión de terminal y ejecuta:

tail -f log/test.log

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

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

Regrese a la cola del registro y debería ver el error, con suerte sin demasiadas otras cosas que lo rodean (porque ejecutó la prueba fallida por sí mismo).