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

David Chelimsky dchelimsky at gmail.com
Sun Jun 13 16:48:07 EDT 2010


On Jun 13, 2010, at 4:35 PM, Kristian Mandrup wrote:

> 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?

See the bit on View Specs on http://github.com/rspec/rspec-rails/blob/master/Upgrade.markdown

> 
> 
> 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
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users



More information about the rspec-users mailing list