Hi, I used your code but it does not work either.
To eliminate the possibility of a problem coming from my application I made a new Rails 3.1.3 app from scratch and scaffold Category stuff. And the result is that view specs start working with either issue #255 solution or yours but controller, routing and request specs fails whatever I try. I've set a "binding.pry" just before "get :index" in the controller spec to have a better vision of what's going on ActionView::TestCase::TestController.new.default_url_options => {:locale=>:en} ActionDispatch::Routing::RouteSet.new.default_url_options => {:locale=>:en} So I think the patch does its job but "get :index" takes another path and not use default_url_options from ActionView::TestCase::TestController nor ActionDispatch::Routing::RouteSet On 17 jan, 02:18, David Chelimsky <dchelim...@gmail.com> wrote: > On Jan 16, 2012, at 5:17 PM, Titinux wrote: > > > > > > > > > > > Hello, > > > I'm using Rails 3.1.3 with rspec-rails 2.8.1. I have a scope ':locale' > > in routes.rb and I want to run controller and routing > > specs. I'm aware of the problem with setting default_url_options in > > application.rb controller so I apply the solution found in the last > > comment on rspec issue #255 (https://github.com/rspec/rspec-rails/issues/255 > > ) > > > #./spec/support/default_locale.rb > > class ActionView::TestCase::TestController > > def default_url_options(options={}) > > { :locale => I18n.default_locale } > > end > > end > > > class ActionDispatch::Routing::RouteSet > > def default_url_options(options={}) > > { :locale => I18n.default_locale } > > end > > end > > > #./spec/controllers/categories_controller_spec.rb > > require "spec_helper" > > > describe CategoriesController do > > > describe "GET index" do > > it "assigns all categories as @categories" do > > category = Factory :category > > > get :index > > assigns(:categories).to_a.should eq([category]) > > end > > end > > end > > > This test fails with routing error but if I use "get :index, > > locale: :fr" instead of just "get :index" the test pass. > > This test is a example of controller spec but I have failing tests for > > routing and request. (I have no view specs but > > I'm pretty sure they would also fail) > > > I can't figure out where the problem come from and why the patch > > doesn't solve it. Is there another thing to do ? (I just put the code > > in ./spec/support/default_locale.rb and verify that it loads > > correctly). > > > Thanks in advance. > > No guarantees here, but it's possible that > ActionView::TestCase::TestController is not loaded yet, in which case its own > definition of default_url_options would clobber yours when it does get > loaded. Try this instead: > > ActionView::TestCase::TestController.class_eval do > undef_method :default_url_options > def default_url_options(options={}) > { :locale => I18n.default_locale } > end > end > > ActionDispatch::Routing::RouteSet.class_eval do > undef_method :default_url_options > def default_url_options(options={}) > { :locale => I18n.default_locale } > end > end > > If those classes aren't loaded yet, Rails will find and load them first (via > its autoload strategy) before invoking class_eval on them, thus ensuring that > you're replacing the existing methods rather than writing methods that will > later be replaced. > > HTH, > David > _______________________________________________ > rspec-users mailing list > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users