Params not available for controller specs?

Hi, all,

I’m trying to write a spec for a controller method that starts out:

def download
@orders = Order.find( params[:ids] )

and started writing a spec that set params[:ids] to a mock. I was
surprised to discover that controller specs (at least in RSpec 1.0.8)
don’t offer the use of the params object (per
http://rspec.rubyforge.org/documentation/rails/writing/controllers.html),
though assigns, flash, and session are available. Maybe I’m missing
something, but it seems to me that it would be helpful if controller
specs could use params also…

Al

  ____________________________________________________________________________________

Looking for last minute shopping deals?
Find them fast with Yahoo! Search.
http://tools.search.yahoo.com/newsearch/category.php?category=shopping

On 4.12.2007, at 10.17, Al Chou wrote:

Hi, all,

I’m trying to write a spec for a controller method that starts out:

def download
@orders = Order.find( params[:ids] )

and started writing a spec that set params[:ids] to a mock.

Why would you want to set params[:ids] to a mock? params values are
always basically strings (or hashes/arrays of strings) and you can set
them in the actual action call:

get :foo, :ids => [1,2,3]

Moreover, in your case Order.find should be the thing you want to
stub. You don’t want the finder call to go to the database, since
you’re speccing the controller behaviour here, not business logic.

//jarkko


Jarkko L.

http://www.railsecommerce.com
http://odesign.fi