2011-02-19 6 views
17

Cuando las especificaciones de mi golpean un error, aparece un mensaje como este:¿Cómo puedo acortar la traza inversa para una falla de prueba en RSpec 2?

Vendor should reject duplicate names 
    Failure/Error: user_with_duplicate_email.should_not be_valid 
    expected valid? to return false, got true 
    # /home/kevin/.rvm/gems/[email protected]/gems/rspec-expectations-2.3.0/lib/rspec/expectations/fail_with.rb:29:in `fail_with' 
    # /home/kevin/.rvm/gems/[email protected]/gems/rspec-expectations-2.3.0/lib/rspec/expectations/handler.rb:44:in `handle_matcher' 
    # /home/kevin/.rvm/gems/[email protected]/gems/rspec-expectations-2.3.0/lib/rspec/expectations/extensions/kernel.rb:50:in `should_not' 
. 
. 
about 15 more lines 
. 
. 
    # /home/kevin/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/drb/drb.rb:1592:in `block (2 levels) in main_loop' 
    # /home/kevin/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/drb/drb.rb:1588:in `loop' 
    # /home/kevin/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/drb/drb.rb:1588:in `block in main_loop' 

estoy corriendo de Ruby 1.0.2, 3.0.3 (carriles), y rspec (2.3.0). archivo de configuración .rspec M tiene solamente dos opciones especificadas:

--drb --colour

¿Cómo apago la traza extendida?

Respuesta

13

En spec_helper.rb se puede filtrar traza inversa usando el siguiente fragmento de código:

RSpec.configure do |config| 
    # RSpec automatically cleans stuff out of backtraces; 
    # sometimes this is annoying when trying to debug something e.g. a gem 

    # RSpec 3: 
    # config.backtrace_exclusion_patterns = [ 
    # RSpec 2: 
    config.backtrace_clean_patterns = [ 
    /\/lib\d*\/ruby\//, 
    /bin\//, 
    /gems/, 
    /spec\/spec_helper\.rb/, 
    /lib\/rspec\/(core|expectations|matchers|mocks)/ 
    ] 
end 
+0

Probado en RSpec 3, funciona perfectamente. – Kris

3

he actualizado para que funcione con la Rspec 3.2.3. En spec_helper.rb poner:

RSpec.configure do |config| 
    config.backtrace_exclusion_patterns = [ 
    /\/lib\d*\/ruby\//, 
    /bin\//, 
    /gems/, 
    /spec\/spec_helper\.rb/, 
    /lib\/rspec\/(core|expectations|matchers|mocks)/ 
    ] 
end 

Esto es oro puro. Gracias luacassus!

+0

¿Por qué esto no funciona para mí? Sé que el código se carga porque he usado 'puts 'HERE'' por encima de esta configuración y lo veo, pero todavía tengo una trayectoria muy larga. –

Cuestiones relacionadas