Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.
/ lazy_mock Public archive

LazyMock object which responds to EVERYTHING quite happily without complaint

License

Notifications You must be signed in to change notification settings

Sage/lazy_mock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lazy_mock

Build Status Maintainability Test Coverage Gem Version

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.

License

This gem is available as open source under the terms of the MIT licence.

Copyright (c) 2018 Sage Group Plc. All rights reserved.

About

LazyMock object which responds to EVERYTHING quite happily without complaint

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages