Salil Gaikwad
2009-Apr-14 06:24 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
following is the method of the helper module ApplicationHelper def tab_class(tab) ''class="active"'' if tab == params[:controller] end end i write the spec method as follows describe ApplicationHelper do it "should be active if controller is same" do tab_class(''royalty_statement'').should include(''active'') end end it gives me following error undefined local variable or method `params'' for #<Spec::Rails::Example::RailsExa mpleGroup::Subclass_1:0x5234150> Regards Salil -- Posted via http://www.ruby-forum.com/.
Fernando Perez
2009-Apr-14 12:01 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
> it gives me following error > > undefined local variable or method `params'' forThat''s normal. Remember that params exists because there is an http request issued. In your spec, you don''t tell Rspec anything about any request. So you could create a mock for params. If I recall correctly you would have to do something like this: describe ApplicationHelper do it "should be active if controller is same" do controller.params = {:controller => ''whatever_value''} tab_class(''royalty_statement'').should include(''active'') end end -- Posted via http://www.ruby-forum.com/.
Salil Gaikwad
2009-Apr-14 12:23 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
Fernando Perez wrote:>> it gives me following error >> >> undefined local variable or method `params'' for > > That''s normal. Remember that params exists because there is an http > request issued. In your spec, you don''t tell Rspec anything about any > request. So you could create a mock for params. If I recall correctly > you would have to do something like this:Thanx fernando i try the following it "should be active if controller is same" do params = {:controller => ''royalty_statement''} tab_class(''royalty_statement'').should include(''active'') end but it doesn''t work out. it gives me same error as previus. -- Posted via http://www.ruby-forum.com/.
Fernando Perez
2009-Apr-14 13:01 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
> it "should be active if controller is same" do > params = {:controller => ''royalty_statement''} > tab_class(''royalty_statement'').should include(''active'') > end > > but it doesn''t work out. it gives me same error as previous.Nah it doesn''t work that way, because remember that RSpec is just Ruby code. ''it'' is just a method, "should be active ..." is just an argument, and then you specify a block of code. So when you define params = ..., you are actually defining a local variable, but that variable is not available inside the controller when the spec is run. That''s why I find controllers so painful to spec. I prefer to use cucumber and webrat for that purpose. Anyway, I thought that setting controller.params would do the trick but no. Maybe you''ll have to force a get request then? so it would be: get :action_name We need to wait for rspec-rails experts advice. By the way the same problem applies to session, so you might be luckier looking for info about simulating session in rspec and then apply the same technique to params. -- Posted via http://www.ruby-forum.com/.
Fernando Perez
2009-Apr-14 13:04 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
Try with that: controller.stub!(:params).and_return({:controller => ''your_controller_name''}) -- Posted via http://www.ruby-forum.com/.
Salil Gaikwad
2009-Apr-14 14:00 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
> Try with that: > > controller.stub!(:params).and_return({:controller => > ''your_controller_name''})Nah it doesn''t work out,gives same error. neways thanx for the info. -- Posted via http://www.ruby-forum.com/.
Salil Gaikwad
2009-Jun-08 05:21 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
Hi All, Any Update on this topic. I still not found any solution for a following method. it "should be active if controller is same" do tab_class(''tab'').should include(''active'') end Regards, Salil -- Posted via http://www.ruby-forum.com/.
David Chelimsky
2009-Jun-08 12:50 UTC
[rspec-users] undefined local variable or method `params'' for #<Spec
On Mon, Jun 8, 2009 at 12:21 AM, Salil Gaikwad<lists at ruby-forum.com> wrote:> Hi All, > > Any Update on this topic. > > I still not found any solution for a following method. > > ?it "should be active if controller is same" do > ? ?tab_class(''tab'').should include(''active'') > ?endPlease read http://wiki.github.com/dchelimsky/rspec/get-in-touch and try again. There is a lot of missing context information here. Thanks, David> > > Regards, > > Salil > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >