1
require 'mocha/metaclass'
7
attr_reader :stubbee, :method
9
def initialize(stubbee, method)
10
@stubbee, @method = stubbee, method
20
restore_original_method
28
def hide_original_method
29
stubbee.__metaclass__.class_eval "alias_method :#{hidden_method}, :#{method}" if stubbee.__metaclass__.method_defined?(method)
33
stubbee.__metaclass__.class_eval "def #{method}(*args, &block); mocha.method_missing(:#{method}, *args, &block); end"
37
stubbee.__metaclass__.class_eval "remove_method :#{method}"
40
def restore_original_method
41
stubbee.__metaclass__.class_eval "alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}" if stubbee.__metaclass__.method_defined?(hidden_method)
45
if RUBY_VERSION < '1.9'
46
method_name = method.to_s.gsub(/\W/) { |s| "_substituted_character_#{s[0]}_" }
48
method_name = method.to_s.gsub(/\W/) { |s| "_substituted_character_#{s.ord}_" }
50
"__stubba__#{method_name}__stubba__"
54
return false unless (other.class == self.class)
55
(stubbee == other.stubbee) and (method == other.method)
58
alias_method :==, :eql?
61
"#{stubbee}.#{method}"
b'\\ No newline at end of file'