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
Deprecated: la bonne méthode est d’appeler:
response.capture(:somewhere)