[rspec-users] Testing a before_filter with a Rails.env condition

David Chelimsky dchelimsky at gmail.com
Mon Aug 29 22:34:31 EDT 2011


On Aug 29, 2011, at 6:09 PM, Shane Mingins wrote:

> Hi
> 
> We have the occasional ApplicationController before_filter that is conditioned by the Rails.env and we like the following style:
> 
>   before_filter :check_for_something if Rails.env == 'production'

This approach won't work because this line is eval'd once and only once when the file is loaded.

> 
> And wish to spec this in an ApplicationController spec using an anonymous controller (e.g. http://relishapp.com/rspec/rspec-rails/docs/controller-specs/anonymous-controller)
> 
> Q. Just wondering how we can Rails.stub(:env).and_return('production') to trigger the before_filter?
> 
> As it stands we have moved the conditional down into the method and stub in the before(:each)
> 
> e.g.
> 
> before_filter :check_for_something
> 
> def check_for_something
>   if Rails.env == 'production'
>       ...
>   end
> end
> 
> before(:each) do
>   Rails.stub(:env).and_return('production')
>  end

This approach works because Rails.env inside the check_for_something method is eval'd each time the method is called.

HTH,
David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110829/6b9572bd/attachment.html>


More information about the rspec-users mailing list