如何测试`alias_method`?

时间:2017-07-15 13:38:28

标签: ruby metaprogramming

我有一个课程如下:

class User
  alias_method :nickname, :username

  def username
    self.name.split(' ').first.downcase
  end
end

我想测试方法:nickname:username的别名。

以下两项都不起作用:

user = User.new
User.instance_method(:nick_name) == User.instance_method(:username)
user.method(:nick_name) == user.method(:username)

类似的讨论发生在How to test method alias ruby,但那里所说的答案没有用。

1 个答案:

答案 0 :(得分:1)

您分享了有关class方法的讨论链接的答案,这里有实例方法。是的,正如@HoMan在评论中正确指出的那样,以下应该有效..

class User
  def username
    self.name.split(' ').first.downcase
  end

  alias nickname, username
end

在你的测试用例中,

user = User.last
user.nick_name == user.username