No momento, se eu executar meu conjunto de testes usando rake spec
, recebo um erro:
1) SegmentsController GET 'index' deve funcionar Falha / erro: obter 'índice' método indefinido `locale 'para # # ./spec/controllers/segments_controller_spec.rb:14: em `bloco (3 níveis) em '
Isso é normal, pois tenho um erro :)
O problema é que o rastreamento não ajuda muito. Eu sei que invadiu a 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 na pasta de especificações.
Correr com --trace
não ajuda.
Respostas:
Você deve executar o rspec com a
-b
opção de ver os rastreamentos completosfonte
Outra alternativa (mais fácil) é editar o
.rspec
arquivo e adicionar abacktrace
opção. Deve ser parecido com isto:Isso lhe dará o backtrace completo. Espero que isto ajude.
fonte
color
. Eu acho que se você soletrarcolour
uma piada do Monty Python pode aparecerIsso também funcionará:
fonte
Outra abordagem é limpar todos os padrões de exclusão de backtrace em
spec_helper.rb
. Eu gosto desta solução mais como eu sou capaz de manter todas as configurações RSpec em um lugar e se livrar.rspec file
ou explícita--backtrace
no.travis.yml
.fonte
Não sei como fazer com que o erro do controlador apareça no rspec. Às vezes ele aparece, mas não sei quais as condições que fazem com que ele apareça. Esta é uma maneira de ver o erro rapidamente:
Abra outra sessão de terminal e execute:
Em seguida, volte para a sessão do terminal e execute apenas a especificação que apresentou o erro:
Volte para o final do log e você verá o erro, esperançosamente sem muitas outras coisas ao redor (porque você executou o teste com falha sozinho).
fonte
Mais uma opção quando tudo mais falha é apenas adicionar um bloco de resgate e imprimir a pilha, tentar ou adicionar uma instrução de ligação de pry lá e usar
show-stack
.fonte
begin
erescue
como a instrução externa do método de ação do controlador. Ou userescue_from
.git diff
antes de cometer para salvar o seu bacon.