On Thu, Feb 28, 2008 at 3:54 AM, Namrata Tiwari <[EMAIL PROTECTED]> wrote:
> This action will list all the articles according to city. Please, can
> some one guide me through this spec.
>
> def list
> @articles = find_city.articles.paginate :all, :page => params[:page]
This line has what we call a train wreck. Don't be alarmed! It sounds
dramatic, but that's a common term for a series of objects strung
together with dots:
find_city returns the first object, on which articles gets called.
articles returns the second object, on which paginate is called.
As soon as you have that second dot you have a train wreck.
More below ...
> , :order
> => "live_on DESC", :conditions => { :type_for => "blog" }
> end
>
>
> it "should list all articles" do
> get :list
Here the action is called before setting up all the expectations. When
using mocks and stubs, they have to be set up before the action.
> controller.stub!(:find_city)
Because the code has find_city returning an object, the stub has to
return an object. Because the object returned by find_city gets sent
paginate, it must be able to respond to that so it needs to either be
the kind of object (an AssociationProxy) or a substitute.
> controller.should_receive(:find_city)
> controller.stub!(:articles)
> controller.should_receive(:articles)
>
> articles.should_receive(:paginate).and_return(@articles)
> response.should render_template('articles/list')
> end
Given the code above, the spec needs to do this:
articles = mock("articles")
articles.should_receive(:paginate).
with(order => "live_on DESC", :conditions => { :type_for => "blog" })
controller.should_receive(:find_city).and_return(articles)
get :list
HTH,
David
>
> I get the following error when I run the spec.
>
> NameError in 'ArticlesController should list all articles'
> undefined local variable or method `articles' for
> #<Spec::Rails::Example::Contro
> llerExampleGroup::Subclass_1:0xa7b57dc>
> spec/controllers/articles_controller_spec.rb:212:
> spec/controllers/articles_controller_spec.rb:3:
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users