[rspec-users] undefined local variable or method `assigns'

Kristian Mandrup kmandrup at gmail.com
Sun Jun 13 16:35:51 EDT 2010


Hi David,

Sounds great! Looking forward to more documentation :)
I have now gone through all the examples in the RSpec book and got
them working with the latest version of RSpec 2 and Rails 3 beta4.
I only have one loose end:

shared_examples_for "a template that renders the messages/form
partial" do
  it "renders the messages/form partial" do
    template.should_receive(:render).with(
      :partial => "form",
      :locals => { :message => assigns[:message] }
    )
    render
  end
end

undefined local variable or method `template' for
#<RSpec::Core::ExampleGroup::Nested_8:0x00000100e019a0>

Changing template to _view as you instructed previously (I think)

    _view.should_receive(:render).with(
      :partial => "form",
      :locals => { :message => assigns[:message] }
    )



 #<ActionView::Base:0x00000100e98c88> received :render with unexpected
arguments
      expected: ({:partial=>"form", :locals=>{:message=>nil}})
           got: ({:template=>"messages/edit.html.erb"}, {})

But this is my edit.html

<%= render "form", :message => @message %>

So _view only contains info on the view. How do I get info on the
templates called as part of the rendering process?


On Jun 13, 3:29 pm, David Chelimsky <dchelim... at gmail.com> wrote:
> On Jun 13, 2010, at 6:49 AM, Kristian Mandrup wrote:
>
> > assigns(:message).should eq(@message)
>
> > assign(:message, stub("Message", :text => "Hello world!"))
>
> > Hmm, so 'assign' to assign a variable and 'assigns' to read an
> > assigned variable?
> > We need to update the RSpec 2 wiki or somewhere with all these API
> > changes so it is clear to everyone.
>
> There's already info about assign(key, val) on the rspec-rails readme:http://github.com/rspec/rspec-rails. I'll add something about assigns(:key) as well.
>
> Keep in mind that assign(k,v) is used in view specs to provide data to the view, whereas assigns(key) is used in controller specs to express expectations about what the controller does.
>
> As for the wiki, let's hold off on that for now. There is currently insufficient  documentation in too many places, and the wiki has, at times, caused more confusion than benefit. I've got a few thoughts rolling around about how to best address this, and I'll follow up on that in a separate thread in the next couple of days.
>
> Cheers,
> David
>
>
>
> > On Jun 11, 9:08 am, David Chelimsky <dchelim... at gmail.com> wrote:
> >> On Thu, Jun 10, 2010 at 4:41 PM, <jfran... at gmail.com> wrote:
> >>> I might be missing something basic here, but I'm stumped on this
> >>> error:
>
> >>> model code:
>
> >>> class CachedStat < ActiveRecord::Base
> >>>    def self.create_stats_days_ago(days_ago, human_id)
> >>>    d = Date.today - days_ago.day
> >>>    @prs = PageRequest.find(:all, :conditions => [ "owner_type =
> >>> 'Human' and owner_id = ? and created_at = ?", human_id, d] )
> >>>  end
> >>> end
>
> >>> spec code:
>
> >>>  it "should create stats for the specified number of days in the
> >>> past" do
> >>>    CachedStat.create_stats_days_ago(1, Human.first.id)
> >>>    assigns[:prs].should eql("foo")
> >>>  end
>
> >>> The error is: undefined local variable or method `assigns' for
> >>> #<Spec::Rails::Example::ModelExampleGroup::Subclass_1:0x2fbac28>
>
> >>> I feel like I'm overlooking something obvious but it's invisible to
> >>> me. Any suggestions?
>
> >> assigns is for controller and view specs, not model specs. What is it
> >> you're trying to specify here?
> >> _______________________________________________
> >> rspec-users mailing list
> >> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
> > _______________________________________________
> > rspec-users mailing list
> > rspec-us... at rubyforge.org
> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list