[rspec-users] get to a different controller
Wincent Colaiuta
win at wincent.com
Tue Jan 5 19:44:20 EST 2010
El 05/01/2010, a las 21:52, Phillip Koebbe escribió:
> Pat Maddox wrote:
>> The spec has Admin::BaseController as the described type. So of
>> course it's going to test against that. If you want to test a
>> different class, you need to describe that instead!
>
> Hi Pat,
>
> Right. But, I'm not really wanting to test a different class. My
> intention is to put the require_admin in the base_controller and
> have all the admin controllers descend from it, so I don't have to
> duplicate the before_filter. I was trying to be simple and make a
> request to a controller that descends from base_controller, thinking
> that if it got through and didn't redirect to the error page, it
> worked. How would you suggest I test that
I test inherited stuff with shared behaviors. It might be something
you could use here.
Basically, I have a bunch of behavior in my ApplicationController, for
example, and in my spec/controllers/application_controller_spec.rb
file I have a bunch of blocks like this:
describe ApplicationController, 'protected methods', :shared =>
true do
...
end
describe ApplicationController, 'parameter filtering', :shared =>
true do
...
end
And I then group them all together in one more shared behavior:
describe ApplicationController, :shared => true do
it_should_behave_like 'ApplicationController protected methods'
it_should_behave_like 'ApplicationController parameter filtering'
...
end
And finally in all subclasses which inherit I can now just do:
describe ArticlesController do
it_should_behave_like 'ApplicationController'
...
end
So the behavior inherited from the superclass is specified, but it is
also tested independently by the inheriting subclasses.
I imagine the same idea might be adaptable in some way for your use
case.
Cheers,
Wincent
More information about the rspec-users
mailing list