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 #

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO