It looks like you are trying to test your model''s functionality by
exercising the controller. If that''s not the case, then you need to
tell your mock exactly what argument to expect. For example:
Project.should_receive(:find).with(:all).and_return([@project,
@project])
or for a single id,
Project.should_receive(:find).with("1").and_return([@project,
@project])
If this kind of testing can be pushed into model testing, that''s best.
Check out the rspec list:
http://rubyforge.org/mailman/listinfo/rspec-users
HTH
On Dec 13, 2007, at 11:19 AM, akv292 wrote:
>
> So, I am new to testing and am a fan of the RSPEC framework, so far.
> There are still a few things about mocking/stubbing that I am unclear
> on.
>
> I am using the line...
>
> Project.should_receive(:find).with(@params[:id]).and_return(@project)
>
> ...to test...
>
> Project.find(params[:id])
>
> ... I am not sure what @params[:id] is referring to in my test. When
> I pass it in with(anything()) the test passes but with(@params[:id])
> it fails. I have created @params = {:id => "1"} and thought
that
> would be enough, but it is not. If anyone can shed some light as to
> what exactly is going on here or at least point me in the right
> direction, I would very much appreciate it.
>
> I will post my test in it''s entirety just in case it is a mistake
> somewhere else.
> I''m currently trying to test:
>
> def front
> @project = Project.find(params[:id])
> end
>
>
> The following code is my test:
>
> describe Clients::ProjectsController, "testing the
''front'' action" do
>
> before(:each) do
> @staff = mock_model(User)
> Project.stub!(:staff).and_return(@staff)
>
> @project = mock_model(Project, :id => "1")
> Project.stub!(:find).and_return(@project)
> @params = { :id => "1" }
> end
>
> def do_post
> post :front, :project => @params
> end
>
> it "should find all of the projects with the params" do
>
> Project.should_receive(:find).with(@params[:id]).and_return(@project)
> # <- this is my problem line
> do_post
> end
>
> it "should find all of the staff through the staff method" do
> Project.should_receive(:staff).with().and_return(@staff)
> do_post
> end
>
> it "should find the clients through the clients method"
>
> end
>
>
>
>
>
>
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---