On Wed, Mar 4, 2009 at 8:38 PM, Perryn Fowler <pezli...@gmail.com> wrote: > Hi > > I am experimenting with Constructor based dependency injection for > rails controllers. > > So I have something like this > > class LoginSessionsController < ApplicationController > > def initialize(authenticator = TheRealAuthenticator) > �...@authenticator = authenticator > end > > .... > end > > > The plan was to override the authenticator used when testing with something > like > > describe LoginSessionsController.new(MyMockAuthenticator) do > ...... > end > > but rspec seems to insist on constructing the controller itself > > Is there a way to do this I am missing? > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
It'd be badass, but, basically, no. Instantiating a controller in Rails takes a lot of work - request/response objects, routes, and the code that does so is a big mess. You could use factory methods, and then stub that method in your examples: class LoginSessionsController < ApplicationController def authenticator TheRealAuthenticator end end describe LoginSessionsController do before(:each) do controller.stub!(:authenticator).and_return MockAuthenticator end end Pat _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users