Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
LazyMock object which responds to EVERYTHING quite happily without complaint
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gitignore
Gemfile
Gemfile.lock
MIT-LICENSE
README.rdoc
Rakefile
lazy_mock.gemspec

README.rdoc

LazyMocks

Rationale

In Rspec, using a mock object, the more functionality you add, the more complaints you get about unexpected messages.

Sometimes you just want an object that responds to anything you throw at it, and just stub specifc behavior.

Enter LazyMocks.

Usage

Every method returns a new instance of LazyMock.

my_mock = LazyMock.new
my_mock.some_method_that_doesnt_exist
=> #<MyMock>

It responds to everything.

my_mock = LazyMock.new
my_mock.respond_to?(:huh?)
=> true

Then you can stub what you want to.

my_mock = LazyMock.new
my_mock.stub(:something).and_return('foo')

Because it returns an instance of iteself, any code paths (the first traversed) will pass:

my_mock = LazyMock.new
if my_mock.thing.other_method.another_method
  return "Test"  if my_mock.has_some_method?
else
  #not getting here..
end

This means that for paths in your specs which you don't care about (because you're testing one specific part) won't break when you add new functionality as you flesh out your implementation.

Something went wrong with that request. Please try again.