Testando blocos de conteúdo nas views com o Rspec 1.1.12
Atualizei meu Rspec para a versão 1.1.12 e comecei a receber o seguinte warning nas specs das minhas views:
[](name) as an alias for capture(name) (TestResponse extension in rspec-rails)
is deprecated and will be removed in the rspec-rails release that follows the
rails-2.3.0 release.
Fui pesquisar e depois de muito rodar fui encontrar esse commit do Rspec que explica mais ou menos o que foi feito. Ainda assim eu não conseguia saber onde exatamente estava o problema. Dando um grep por ‘response’ nas minhas specs de view foi que caiu a ficha. O problema é que devido à uma alteração que foi feita ao Edge Rails (futuro 2.3) haverá uma incompatibilidade com o rspec-rails, o que forçou o Chelimsky a deprecar a utilização de código do tipo:
response[:left_column].should_not have_tag("a", "Apagar")
Onde :left_column indica algum bloco de conteúdo que você adicionou na sua view fazendo
<% content_for :left_column do %> ... <% end %>
Por enquanto ainda dá pra testar como feito acima, mas além disso estar deprecado e já estar previsto para ser removido, quando você rodar suas specs verá um monte de warning feio. A solução é utilizar o método capture, que já existia anteriormente, sendo o [ ] apenas um alias para ele.
response.capture(:left_column).should_not have_tag("a", "Apagar")


