[rspec-users] specing a call to render :layout => "some_layout"

Daniel N has.sox at gmail.com
Sat Jul 28 09:53:51 EDT 2007


On 7/28/07, David Chelimsky <dchelimsky at gmail.com> wrote:
>
> On 7/28/07, Daniel N <has.sox at gmail.com> wrote:
> > I'm trying to specify that an action should be rendered with a given
> layout
> > one particular spec.
> >
> > What I've got at the moment is this.
> >
> >   it "should render with the grabber layout" do
> >     controller.should_receive( :render ).with( :layout => "my_layout" )
> >     do_get
> >   end
> >
> > This doesnt work even though this call to render is being executed.
> >
> > render :layout => "my_layout"
> >
> > Firstly I don't understand why this isn't working.  I'm getting an
> object
> > inspect with this message at the end
> >
> > > expected :render with ({:layout=>"my_layout"}) but received it with
> (no
> > args)
> > >
> >
> > I'd really like to understand why this isn't working, but I don't really
> > like it anyway.  I mean, I really want to spec that under a particular
> set
> > of conditions it renders with a given layout.
> >
> > I can't imagine I'm the first person to come up against this one.  How
> are
> > other people handling this?
>
> I'm not sure what the particular problem is in your case, but there
> have been myriad problems with mocking render because render calls
> itself recursively and is a one-stop shop for rendering all sorts of
> things. RSpec's mock frameworks, as is the case with most mock
> frameworks (the one exception I know of being the new RR framework -
> see http://rubyforge.org/projects/pivotalrb/) do not support mocking
> one call to a method and passing the rest through. So while under some
> circumstances everything works fine, under others, not so much.
>
> This is resolved in trunk with the addition of the expect_render
> method, which uses composition to interact with a mock, but doesn't
> actually mock the method directly. You use it like this:
>
> controller.expect_render(:layout => false)
>
> Any calls to render that don't look like that will be passed through
> to the controller's render method.
>
> This will be part of the 1.0.6 release, which has been on hold for a
> few weeks pending some additional changes but I'm thinking of
> releasing it sooner than later.
>
>
> >
> > Cheers
> > Daniel
> >


Thanx David.

I just updated to trunk and it worked a treat.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/rspec-users/attachments/20070728/7c7f0417/attachment-0001.html 


More information about the rspec-users mailing list