Mor*_*ori 11 ruby reflection alias-method
在单元测试中,我需要测试alias_method定义的别名方法是否已正确定义.我可以简单地对用于原始的别名使用相同的测试,但我想知道是否有更明确或有效的解决方案.例如,有没有办法1)取消引用方法别名并返回其原始名称,2)获取并比较某种基础方法标识符或地址,或3)获取和比较方法定义?例如:
class MyClass
def foo
# do something
end
alias_method :bar, :foo
end
describe MyClass do
it "method bar should be an alias for method foo" do
m = MyClass.new
# ??? identity(m.bar).should == identity(m.foo) ???
end
end
Run Code Online (Sandbox Code Playgroud)
建议?
bk1*_*k1e 18
根据Method的文档,
如果两个方法对象绑定到同一个对象并包含相同的主体,则它们是相等的.
调用Object#method和比较Method它返回的对象将验证方法是否等效:
m.method(:bar) == m.method(:foo)
Run Code Online (Sandbox Code Playgroud)