Repository is archived
No commit activity in last 3 years
No release in over 3 years
Allows you to disable methods at run-time, such as when you want to ensure that certain methods are never called during a test suite.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.0.0
~> 1.8.3
~> 3.12
~> 2.8.0
~> 0.7
 Project Readme

method_disabling¶ ↑

Allows disabling methods at runtime. It can be used to raise an error whenever a certain method is called from within your test suite to ensure the developers on your team don’t accidentally write fragile tests. For example, you might want to disable access to a shared resource.

Getting Started¶ ↑

Add method_disabling to your Gemfile (probably under the test group):

group :test do
  gem "method_disabling"
end

Use Module#disable_method and Module#disable_class_method to disable methods that you don’t want called during your test suite. For example, to disable access to Net::HTTP:

# spec/spec_helper.rb
config.before do
  Net::HTTP.disable_method :initialize
end

When developers inadvertantly write unit tests that access the disabled method, they will see an error message:

NoMethodError: Net::HTTP#initialize is disabled

You can set a custom error message by adding a second parameter to disable_method:

# spec/spec_helper.rb
config.before do
  Net::HTTP.disable_method :initialize, "You were about to access an external resource. Please mock or stub instead."
end

A disabled method can be restored to its original behavior with restore_method:

Net::HTTP.restore_method :initialize

The same can be done for class methods with disable_class_method and restore_class_method.

method_disabling is tested on Ruby 1.8.7, 1.9.2, 1.9.3, REE, Rubnius (1.8 and 1.9 mode), and JRuby (1.8 and 1.9 mode).

Contributing to method_disabling¶ ↑

  • Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet.

  • Check out the issue tracker to make sure someone already hasn’t requested it and/or contributed it.

  • Fork the project.

  • Start a feature/bugfix branch.

  • Commit and push until you are happy with your contribution.

  • Make sure to add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright © 2012 David Cuddeback. See LICENSE.txt for further details.