2017-07-15 9 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

これは、エイリアスされているメソッドに副作用がない場合にのみ機能します。 –

関連する問題