gpt4 book ai didi

ruby - 有没有一种优雅的方法来测试一个实例方法是否是另一个实例方法的别名?

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:14 24 4
gpt4 key购买 nike

在单元测试中,我需要测试是否正确定义了 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

建议?

最佳答案

根据 Method 的文档,

Two method objects are equal if that are bound to the same object and contain the same body.

调用 Object#method并比较它返回的 Method 对象将验证这些方法是否等效:

m.method(:bar) == m.method(:foo)

关于ruby - 有没有一种优雅的方法来测试一个实例方法是否是另一个实例方法的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com