On Jun 13, 8:36 am, daze <[email protected]> wrote: > I'm going through The RSpec Book, and (specifically around page 333) I > encountered a problem. Basically, whenever I use "should > have_selector" in a nested form, it silently passes when it SHOULD > fail. > > I've been copying the code exactly as from the book. Now, there is > one major difference - I'm using Capybara while the book is using > Webrat. Why? I've had bigger problems with Webrat. In fact, when I > switch to Webrat by putting it in the Gemfile, I get this unidentified > method error in which has_selector isn't recognized (which is doubly > odd because this happens where I call have_selector...) > > Anyway, here's the code: > > -------new.html.erb_spec.rb------- > > require 'spec_helper' > > describe "messages/new.html.erb" do > > let(:message) do > mock_model("Message").as_new_record.as_null_object > end > > before do > assign :message, message > end > > it "renders a form to create a message" do > render > rendered.should have_selector("form", > :method => "post", > :action => messages_path > ) do |form| > form.should have_selector("input", :type => "submit") # this > should be failing right now!!! > end > end > > # this should be failing right now!!! > it "renders a text field for the message title" do > message.stub(:title => "the title") > render > rendered.should have_selector("form") do |form| > form.should have_selector("input", > :type => "submit", > :name => "message[title]", > :value => "the title" > ) > end > end > > # this should be failing right now!!! > it "renders a text area for the message text" do > message.stub(:text => "the message") > render > rendered.should have_selector("form") do |form| > form.should have_selector("textarea", > :name => "message[text]", > :content => "the message" > ) > end > end > end > > -----new.html.erb------ > > <%= form_for @message do |f| %> > > # nothing is in here, so those nested "should have_selector" > statements should fail > > <% end %> > > Thanks in advance!
The examples in the book use webrat, which has a has_selector matcher that supports nesting. The capybara have_selector matcher does not support nesting (yet). You don't get any feedback because Ruby lets you pass a block to any method, and leaves it to the method to handle it or ignore it. In this case it's being ignored. HTH, David -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

