0.0
No commit activity in last 3 years
No release in over 3 years
Monkey patch rspec-mocks to check for method existence
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

~> 2.11
 Project Readme

rspec-radar

rspec-radar monkey patches rspec-mocks to prevent the stubbing of methods that don't exist. If you try and stub a method that doesn't exist, an UndefinedMethodError will be raised.

Usage

Step 1. Add the gem to your gemfile.

  # Gemfile
  gem 'rspec-radar'

Step 2. In the spec_helper.rb file, require 'rspec/radar'

  # spec_helper.rb
  require 'rspec/radar'

Now if you call stub or should_receive on a class or variable, it will check to see if the method exists and raise an exception if it doesn't.

How it works

rspec-radar monkey patches rspec-mocks and will raise an excpetion if you stub a method that doesn't exist. Spefically it alters the method visibility in the class MethodDouble.

Motivations

I want to be able to prevent the stubbing of nonexistent methods when using rspec. Currently there is no way to do this with rspec-mocks. There is a popular mocking alternative called rspec-fire; however, rspec-fire isn't what I am after. rspec-fire introduces a different stubbing syntax and doesn't guard against a stub on an instance variable.

Contributing

I'm more that happy to accept pull-requests. Also, I'm more than happy to receive crticism/suggestions for a better way to make this work.

git clone https://github.com/wusher/rspec-radar.git
bundle install
bundle exec rake spec

Future Plans

The following are features in want to add. (not in any spefic order)

  • make it work when stubbing an entire class ( i.e. stub(Avocado, fake_method: "boom") # raises undefined method error)
  • make it work with any_instance ( i.e. Avocado.any_instance.stub(:fake_method) # raises undefined method error)
  • make the existance checks a configuration option
  • setup stub! so it will skip the existance check`