27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/test/spec/add_allow_switch.rb', line 27
def add_allow_switch(method, options={})
default = options[:default] || false
mattr_accessor "allow_#{method}"
send("allow_#{method}=", default)
unless respond_to?(:__metaclass___)
def __metaclass__
class << self; self; end
end
end
__metaclass__.class_eval do
alias_method "original_#{method}", method
eval %{
def #{method}(*args, &block)
if allow_#{method}
original_#{method}(*args, &block)
else
raise RuntimeError, "You're trying to call `#{method}' on `#{self}', which you probably don't want in a test."
end
end
}, binding, __FILE__, __LINE__
end
end
|