Mocking models provided in Rails plugins

Hey folks,

How do I mock a model that is given to me by a Rails plugin? I’m
trying to mock Session from the restful_authentication plugin but I
get a number of errors telling me RSpec doesn’t recognize Session.

NameError in ‘SessionsController handling GET /sessions/new should be
successful’
uninitialized constant Session

An example of my usage:

before do
@session = mock_model(Session)
Session.stub!(:new).and_return(@session)
end

Thanks!

Dan C.

organic brains. digital solutions.

On 10/18/07, Dan C. [email protected] wrote:

http://thoughtbot.com
organic brains. digital solutions.


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

class Session; end

You can stick that in spec_helper.rb if you use Session in a lot of
places.

I think you can also do Session.class_eval {} somewhere and that’ll
load up the actual Session class instead of the dummy implementation I
just showed. It won’t use the implementation in your specs of course,
but it loads the provided class into memory.

Pat

Dan,

On Oct 18, 2007, at 6:14 PM, Dan C. wrote:

Hey folks,

How do I mock a model that is given to me by a Rails plugin? I’m
trying to mock Session from the restful_authentication plugin but I
get a number of errors telling me RSpec doesn’t recognize Session.

NameError in ‘SessionsController handling GET /sessions/new should
be successful’
uninitialized constant Session

Your problem is that the class isn’t just Session, it’s
CGI::Session::ActiveRecordStore::Session

Brandon

Dan, you can take a look at what *court3nay did, here:


http://sample.caboo.se/empty_rails_app/trunk/spec/controllers/session_controller_spec.rb

Robert