Testando helpers de bloco no RSpec
11 de June de 2009 - 12:04
Uma coisa que gosto de fazer nos helpers é encapsular o conteúdo utilizando blocos.
# spec/fixtures/views/main.html.erb
<% main do %> This is the main content!
<% end %> Para utilizar a sintaxe acima, basta criar um helper como este:
# app/helpers/application_helper.rb
def main(&block) concat content_tag(:div, capture(&block), :class => "main")
end Não existe nenhuma maneira específica de testar esse tipo de helper; algumas pessoas sugerem criar um teste de view, enquanto outros escrevem verdadeiras gambiarras para fazer isso no próprio arquivo de testes de helpers. A maneira mais simples é derivada do teste de view.
Primeiro, crie uma view no diretório spec/fixtures/views/main.html.erb; esse caminho não existirá, então você precisará criá-lo. Agora, crie o arquivo de specs em spec/views/main.html.erb_spec.rb. O segredo está em adicionar um novo path de busca de views. Isso pode ser feito com o método ActionController::Base.prepend_view_path.
Veja como ficará seu arquivo de teste.
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
ActionController::Base.prepend_view_path RAILS_ROOT + "/spec/fixtures/views"
describe "Containers" do it "should render main helper" do render "main.html.erb" response.body.should have_tag("div.main", 1) response.body.should have_tag("div.main", "This is the main content!") end
end Nada como a simplicidade!







Comentários (0)