2009-06-21 1 views
4

Ich habe gerade begonnen, BDD mit RSpec/Cucumber/Webrat und Rails zu benutzen und ich bin frustriert, um meine Sicht zu bekommen Spezifikation zu übergeben.Rails, RSpec und Webrat: Erwartete Ausgabe stimmt mit gerenderter Ausgabe überein, aber immer noch Fehler in der View-Spezifikation

Als erstes starte ich Ruby 1.9.1p129 mit Rails 2.3.2, RSpec und RSpec-Rails 1.2.6, Cucumber 0.3.11 und Webrat 0.4.4.

Hier ist der Code relevant zu meiner Frage

config/routes.rb:

map.b_posts     'backend/posts', 
          :controller => 'backend/posts', 
          :action => 'backend_index', 
          :conditions => { :method => :get } 

map.connect     'backend/posts', 
          :controller => 'backend/posts', 
          :action => 'create', 
          :conditions => { :method => :post } 

views/backend/Beiträge/create.html.erb:

<% form_tag do %> 
<% end %> 

spec/views/backend/posts/create.html.erb_spec.rb:

describe "backend/posts/create.html.erb" do 
    it "should render a form to create a post" do 
    render "backend/posts/create.html.erb" 
    response.should have_selector("form", :method => 'post', :action => b_posts_path) do |form| 
     # Nothing here yet. 
    end 
    end 
end 

Hier ist der relevante Teil der Ausgabe, wenn ich Skript/spec laufen:

'backend/posts/create.html.erb should render a form to create a post' FAILED 
expected following output to contain a <form method='post' action='/backend/posts'/> tag: 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body><form action="/backend/posts" method="post"> 
</form></body></html> 

Es erscheint mir wäre das was have_selector ist auf der Suche nach ist genau das, was die Vorlage erzeugt, noch das Beispiel schlägt immer noch fehl. Ich freue mich sehr auf meinen Fehler (weil ich das Gefühl habe, es ist mein Fehler). Jede Hilfe wird sehr geschätzt!

+0

Update: Es funktioniert, wenn ich den Block entfernen. –

Antwort

2

Wenn Sie den Block behalten möchten, versuchen Sie es mit den rspec-rails-Matcher anstelle der Webrat-Matcher.

describe "backend/posts/create.html.erb" do 
    it "should render a form to create a post" do 
    render "backend/posts/create.html.erb" 
    response.should have_tag("form[method=post][action=?]", b_posts_path) do |form| 
     with_tag('input') 
     # ... etc 
    end 
    end 
end 
Verwandte Themen