[rspec-users] Help with spec controller

David Chelimsky dchelimsky at gmail.com
Tue Jun 5 13:22:37 EDT 2007


On 6/5/07, Gaston Ramos <gramos at rectorado.unl.edu.ar> wrote:
> El mar, 05 de jun de 2007, a las 12:00:11 -0500, David Chelimsky dijo:
> > On 6/5/07, Gaston Ramos <gramos at rectorado.unl.edu.ar> wrote:
> > > El mar, 05 de jun de 2007, a las 10:59:15 -0500, David Chelimsky dijo:
> > > > On 6/5/07, Gaston Ramos <gramos at rectorado.unl.edu.ar> wrote:
> > > > > Hello,
> > > > >
> > > > > I haven't been able to create a controller spec.
> > > > > You can see the code here:
> > > > >
> > > > > http://pastie.caboo.se/67980
> > > >
> > > > Instead of this:
> > > >
> > > >   Person.stub!(:save).and_return( @person )
> > > >
> > > > do this:
> > > >
> > > >   person.stub!(:save).and_return(true)
> > > >
> > > > Please let us know if that fixes it.
> > >
> > > I tried that way and it did'nt work
> >
> > "it didn't work" doesn't help us to help you. How didn't it work? What
> > was the error this time? Can you post the controller code in addition
> > to the rspec example?
>
> you can see the person_controller_spec code:
>
> http://pastie.caboo.se/67993
>
> and the person_controller code:
>
> http://pastie.caboo.se/67994
>
> when I run:
>  rake spec:controllers
>
> I get this error:
>
> DEPRECATION WARNING: model is deprecated and will be removed from Rails 2.0  See
> http://www.rubyonrails.org/deprecation for details. (called from
> /home/gramos/src/rails/dental/config/../app/controllers/application.rb:10)
> DEPRECATION WARNING: depend_on is deprecated and will be removed from Rails 2.0
> See http://www.rubyonrails.org/deprecation for details. (called from
> model_without_deprecation at
> /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/deprecated_dependencies.rb:13)
> ...F
>
> 1)
> Spec::Mocks::MockExpectationError in 'PersonController should tell the Person
> model to create a new person on POST to create'
> Mock 'person' received unexpected message :save with (no args)
> /home/gramos/src/rails/dental/config/../app/controllers/person_controller.rb:26:in
> `create'
> ./spec/controllers/person_controller_spec.rb:47:
>
> Finished in 0.142998 seconds
>
> 4 examples, 1 failure

The stuff being mocked in the example is not the same as the stuff
happening in the controller. The first problem is the one I brought up
earlier. That's what is causing the specific error you are getting
because you're mocking :save on the Person class, but sending :save to
the @person instance in the controller.

Also, there is no need for
@person.should_receive(:new_record?).and_return(false) - that's not
getting called.

Lastly, the controller is calling Person.new, but the example is
mocking Person.create.

I think this should work:

http://pastie.caboo.se/67998

Give it a shot.




>
>
> >
> >
> > >
> > > >
> > > > >
> > > > > The error message I'm getting is:
> > > > >
> > > > > Spec::Mocks::MockExpectationError in 'PersonController should tell the Person
> > > > > model to create a new person on POST to create'
> > > > > Mock 'person' received unexpected message :save with (no args)
> > > > > /home/gramos/src/rails/dental/config/../app/controllers/person_controller.rb:26:in
> > > > > `create'
> > > > > ./spec/controllers/person_controller_spec.rb
> > > > >
> > > > > I can't find what I am doing wrong.
> > > > >
> > > > > I would appreciate any help. thanks in advance.
> > > > >
> > > > >
> > > > > --
> > > > > Gastón Ramos
> > > > >
> > > > > "I always thought Smalltalk would beat Java, I just didn't know it would be
> > > > > called 'Ruby' when it did."
> > > > >  -- Kent Beck
> > > > > _______________________________________________
> > > > > rspec-users mailing list
> > > > > rspec-users at rubyforge.org
> > > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > > >
> > > > _______________________________________________
> > > > rspec-users mailing list
> > > > rspec-users at rubyforge.org
> > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > >
> > >
> > > --
> > > Gastón Ramos
> > >
> > > "I always thought Smalltalk would beat Java, I just didn't know it would be
> > > called 'Ruby' when it did."
> > >  -- Kent Beck
> > > _______________________________________________
> > > rspec-users mailing list
> > > rspec-users at rubyforge.org
> > > http://rubyforge.org/mailman/listinfo/rspec-users
> > >
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
>
> --
> Gastón Ramos
>
> "I always thought Smalltalk would beat Java, I just didn't know it would be
> called 'Ruby' when it did."
>  -- Kent Beck
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list