diff --git a/lib/mocha/module_method.rb b/lib/mocha/module_method.rb index 8f842a87d..1eb6932cd 100644 --- a/lib/mocha/module_method.rb +++ b/lib/mocha/module_method.rb @@ -3,14 +3,6 @@ module Mocha class ModuleMethod < ClassMethod - - def method_exists?(method) - return true if stubbee.public_methods(false).include?(method) - return true if stubbee.protected_methods(false).include?(method) - return true if stubbee.private_methods(false).include?(method) - return false - end - end end diff --git a/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb b/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb index 722566a00..daffe1058 100644 --- a/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +++ b/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb @@ -72,4 +72,67 @@ def my_instance_method ensure Kernel.module_eval { remove_method :my_instance_method } end + + def test_should_stub_public_module_method_and_leave_it_unchanged_after_test + Kernel.module_eval do + def my_instance_method + :original_return_value + end + public :my_instance_method + end + mod = Module.new + assert_snapshot_unchanged(mod) do + test_result = run_as_test do + mod.stubs(:my_instance_method).returns(:new_return_value) + assert_method_visibility mod, :my_instance_method, :public + assert_equal :new_return_value, mod.my_instance_method + end + assert_passed(test_result) + end + assert_equal :original_return_value, mod.my_instance_method + ensure + Kernel.module_eval { remove_method :my_instance_method } + end + + def test_should_stub_protected_module_method_and_leave_it_unchanged_after_test + Kernel.module_eval do + def my_instance_method + :original_return_value + end + protected :my_instance_method + end + mod = Module.new + assert_snapshot_unchanged(mod) do + test_result = run_as_test do + mod.stubs(:my_instance_method).returns(:new_return_value) + assert_method_visibility mod, :my_instance_method, :protected + assert_equal :new_return_value, mod.send(:my_instance_method) + end + assert_passed(test_result) + end + assert_equal :original_return_value, mod.send(:my_instance_method) + ensure + Kernel.module_eval { remove_method :my_instance_method } + end + + def test_should_stub_private_module_method_and_leave_it_unchanged_after_test + Kernel.module_eval do + def my_instance_method + :original_return_value + end + private :my_instance_method + end + mod = Module.new + assert_snapshot_unchanged(mod) do + test_result = run_as_test do + mod.stubs(:my_instance_method).returns(:new_return_value) + assert_method_visibility mod, :my_instance_method, :private + assert_equal :new_return_value, mod.send(:my_instance_method) + end + assert_passed(test_result) + end + assert_equal :original_return_value, mod.send(:my_instance_method) + ensure + Kernel.module_eval { remove_method :my_instance_method } + end end