Como fazer com que o rspec-2 forneça o rastreamento completo associado a uma falha de teste?
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 #
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.rblinha 14, mas é aqui que chamo o teste:
Eu preferiria ter a quebra de linha real e o rastreamento completo, não a parte na pasta de especificações.
Correr com --tracenão ajuda.
Verifique spin.atomicobject.com/2010/12/28/rspec-backtrace-filtering Há uma maneira de alterar a filtragem de backtrace RSpec padrão
— Bohdan,
Você deve executar o rspec com a -bopção de ver os rastreamentos completos
— solnic
Eu não entendi, nem esta nem a resposta aceita fornecem um retrocesso além do seu arquivo de especificações. Ou não funciona apenas para mim o_O
— janko-m
e fwiw se você usar rspec com spork e guard, você pode criar um arquivo .rspec e adicionar -b a ele para obter a saída ao executar seu conjunto de testes
Esta é de fato a resposta correta - você não precisa do backtrace completo (que inclui coisas como rails e rspec e outras joias) quase todo o tempo - a única vez que você precisa é para depurar ou entender algo causado pela joia em si. Portanto, siga os padrões de limpeza de backtrace padrão e use -b nos casos estranhos quando precisar.
Ele não mostrou informações de rastreamento de pilha sobre o erro em si. Em vez disso, mostrou o rastreamento de pilha da gem rspec
Funciona para RSpec 3 também
Outra alternativa (mais fácil) é editar o .rspecarquivo e adicionar a backtraceopção. Deve ser parecido com isto:
Isso lhe dará o backtrace completo. Espero que isto ajude.
Sim! isso é exatamente o que eu precisava. rastreamento de pilha para o erro real, não para a pilha de especificações.
— DiegoSalazar
Eu acredito que a grafia apropriada é color. Eu acho que se você soletrar colouruma piada do Monty Python pode aparecer
Apropriado se você é da América. No Reino Unido, eles escrevem em cores, e o pessoal da rspec é tão gentil em permitir os dois;)
Isso é uma chave no capô!
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 fileou explícita --backtraceno .travis.yml.
Não parece ter essa opção no rspec 2.x.
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).
— Benjamin Atkin
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.
Às vezes, essa é a melhor opção. Apenas certifique-se de removê-lo assim que começar a funcionar. Deve envolver o local onde você espera que o erro esteja. Talvez coloque o bloco begine rescuecomo a instrução externa do método de ação do controlador. Ou use rescue_from.
@bat sim, esta é uma tentativa de último recurso e, como @bat disse, precisa ser removida assim que você descobrir. Lembre-se sempre de fazer o seu git diffantes de cometer para salvar o seu bacon.