[rspec-users] Problem when testing controllers

Daniel Area Criações danielvlopes at areacriacoes.com.br
Fri Dec 12 15:32:28 EST 2008


Thanks, now it's looks obivious. :D
Atenciosamente,

Daniel Lopes    Area Criações
Design, Websites e Sistemas Web

Visite:  http://www.areacriacoes.com.br/projects
          http://blog.areacriacoes.com.br/

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
55 (31) 3077-4560  /  55 (31) 8808-8748  /  55 (31) 8737-7501


On Fri, Dec 12, 2008 at 6:16 PM, Pat Maddox <pergesu at gmail.com> wrote:

> "Daniel Lopes" <danielvlopes at gmail.com> writes:
>
> > I'm having troubles to test methods on controllers, specially this
> method:
> >
> >   def update
> >     @property = @user.properties.find(params[:id])
> >
> >     if params[:property][:owner_id].blank?
> >       @owner = Owner.create_from_user(@user)
> >       @property.owner = @owner
> >     end
> >
> >     if @property.update_attributes(params[:property])
> >       flash[:notice] = 'Im&oacute;vel atualizado com sucesso.'
> >       redirect_to user_property_path(@user)
> >     else
> >       render :action => "edit"
> >     end
> >   end
> >
> > This method is pretty standard, except for the line  ==>  if
> params[:property][:owner_id].blank?
> >
> > In my spec file I try this:
> >
> >       it "should expose the requested property as @property" do
> >         @property = mock_model(Property, :owner=>:owner, :owner=
> =>:owner, :update_attributes => true)
> >         Property.stub!(:find).and_return(@property)
> >         Owner.stub!(:create_from_user)
> >
> >         put :update, :id => "1"
> >         assigns(:property).should equal(@property)
> >       end
> >
> > But get this error:
> > The error occurred while evaluating nil.[]
> >
> > The problem is params and I don't know how is the best way to simulete
> params hash ...
>
> Hi, you need to pass the param in the put:
>
> put :update, :id => "11", :property => {:owner_id => "123"}
>
> and when you want to check for the blank one, you just have to pass in
> an empty property hash:
>
> put :update, :id => "11", :property => {}
>
> This way params[:property][:owner_id] will return nil.
>
> Pat
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20081212/1c596200/attachment.html>


More information about the rspec-users mailing list