RSpec : tester le contenu d’un content_for

Une spécification de vue sous RSpec pourrait ressembler à ça :

  it "should render column titles" do
    render "/feeds/index.html.erb"
    response.should have_tag("tr>th", "name")
    response.should have_tag("tr>th", "url")
  end

Mais cette méthode ne permet pas de tester les bribes de HTML qui sont produites dans un content_for. En effet, ces bribes sont incluses directement dans le layout, pas dans la production de la vue. Pour ce faire, ajouter dans spec_helper.rb :

  def content_for(name)
    response.template.instance_variable_get("@content_for_#{name}")
  end

Puis dans les specs :

  it "should render a 'New feed' link" do
    render "/feeds/index.html.erb"
    content_for(:somewhere).should have_tag("a[href=?]", new_feed_path)
  end

Merci à Carl-Johan Kihlbom.

One Comment

  1. guillaume
    Posted 4 mai 2009 at 17:17 | Permalink

    Deprecated: la bonne méthode est d’appeler:

    response.capture(:somewhere)

Post a Comment

Your email is never shared. Required fields are marked *

*
*