/ / Como fazer com que o rspec-2 forneça o rastreamento completo associado a uma falha no teste? - ruby, ruby-on-rails-3, teste, rspec, rspec2

Como obter o rspec-2 para fornecer o rastreio completo associado a uma falha de teste? - rubi, rubi-sobre-trilhos-3, teste, rspec, rspec2

Agora, se eu executar meu conjunto de testes usando rake spec Eu recebo um erro:

1) SegmentsController GET "index" deve funcionar Falha / Erro: get "index" método indefinido `locale" para # # ./spec/controllers/segments_controller_spec.rb:14: no bloco `(3 níveis) em"

Isso é normal, pois tenho um erro :)

O problema é que o rastreamento não é muito útil. Eu sei que ele entrou em colapso segments_controller_spec.rb, linha 14, mas é aqui que chamo o teste:

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

Eu preferiria ter a quebra de linha real e o rastreamento completo, não a parte da pasta spec.

Correndo com --trace não ajuda.

Respostas:

237 para resposta № 1

Você deve executar o rspec com -b opção para ver backtraces completos


29 para resposta № 2

Outra alternativa (mais fácil) é editar o .rspec arquivo e adicione o backtrace opção. Deve ser parecido com isto:

--colour
--backtrace

Isso lhe dará o backtrace completo. Espero que isto ajude.


3 para resposta № 3

Isso também funcionará:

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

2 para resposta № 4

Outra abordagem é limpar todos os padrões de exclusão de backtrace em spec_helper.rb. Gosto mais desta solução, pois sou capaz de manter todas as configurações RSpec em um só lugar e me livrar de .rspec file ou explícito --backtrace dentro .travis.yml.

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

0 para a resposta № 5

Mais uma opção quando todo o resto falhar é apenas adicionar um bloco de resgate e imprimir a pilha, tentar ou adicionar uma instrução de pry de ligação lá e usar show-stack.

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

0 para a resposta № 6

Não sei como fazer com que o erro do controlador apareça no rspec. Às vezes, ele aparece, mas não sei em que condições ele aparece. Esta é uma maneira de ver o erro rapidamente:

Abra outra sessão de terminal e execute:

tail -f log/test.log

Em seguida, volte para a sessão do terminal e execute apenas a especificação que apresentou o erro:

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

Volte para o final do log e você verá o erro, com sorte, sem muitas outras coisas em torno dele (porque você executou o teste com falha sozinho).