Есть ли элегантный способ проверить, является ли один метод экземпляра псевдонимом для другого?

В модульном тесте мне нужно проверить, правильно ли определены методы псевдонимов, определенные 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

Предложения?

11
задан Mori 6 October 2010 в 05:21
поделиться