On Wed, Mar 4, 2009 at 8:38 PM, Perryn Fowler <[email protected]> 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
> [email protected]
> 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
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users