On 4 April 2011 02:00, Matt S. <li...@ruby-forum.com> wrote: > For some reason I can't figure out how to make the fields_for tags > render in the trivial example below; however, it works in the browser. > What does #build_association do that my stubbed method does not > replicate? (Or is that even the issue?) > > I appreciate the insight. Thanks! Matt Smith > > #spec/views/assets/new.html.erb_spec.rb > describe "assets/new.html.erb" do > let(:asset) { mock_model("Asset").as_new_record.as_null_object } > let(:owner) { mock_model("Owner").as_new_record.as_null_object } > > before(:each) do > asset.stub(:owner => owner) > assign(:asset, asset) > end > > it "renders new asset form" do > render > > assert_select "form", :action => assets_path, :method => "post" do > assert_select "input#asset_name", :name => "asset[name]" # passes > assert_select "input#asset_owner_attributes_name", :name => > "asset[owner_attributes][name]" # fails! > end > end > end > > #app/views/assets/_form.html.erb > <%= form_for(@asset) do |f| %> > > <div class="field"> > <%= f.label :name %><br /> > <%= f.text_field :name %> > </div> > > <%= f.fields_for :owner do |owner_fields| %> > <div class="field"> > <%= owner_fields.label :name %> > <%= owner_fields.text_field :name %> > </div> > <% end %> > > <div class="actions"> > <%= f.submit %> > </div> > <% end %>
In similar view specs, I've stubbed #owner_attributes= on the 'assets' mock. I think Rails' nested form/assignment implementation does a check on the existence of this method to make sure that the Asset model does indeed accept nested assignment for that attribute. Chris _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users