Project

lazy_mock

0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Lazy Mocks just respond to anything you throw at them.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 0
 Project Readme

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.