2017-07-15 53 views
0

我有一個類,如下所示:如何測試`alias_method`?

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

作品對我來說,'alias_method'需要將用戶名後定義雖然。 –

+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 
+0

這隻有在別名的方法沒有副作用時纔有效。 –