2016-01-21 12 views
5

Article#to_archive ist ein Alias ​​für Article#archived!:Überprüfen Sie, ob ein Verfahren ein Alias ​​für ein anderes Verfahren in rspec

class Article 
    alias to_archive archived! 
end 

ich dies gewährleisten müssen, so schrieb ich diesen Test:

describe '#to_archive' do 
    it 'is an alias to #archived!' do 
    expect(subject.method(:to_archive)).to eq(subject.method(:archived!)) 
    end 
end 

jedoch ich erhalte einen Fehler

Failure/Error: expect(subject.method(:to_archive)).to eq(subject.method(:archived!)) 

    expected: #<Method: Article(#<Module:0x00000005a7c240>)#archived!> 
     got: #<Method: Article(#<Module:0x00000005a7c240>)#to_archive(archived!)> 

Es verwendete in ruby ​​< 2.3 IIRC zu arbeiten. Ich habe versucht alias_method, aber es hat nicht geholfen.

+0

Nein tut es nicht. Es ist auch in der Artikelinstanz definiert, nicht als Klassenmethode –

Antwort

5

Die Definition von Method#== ist nicht klar und/oder nützlich, so dass Sie sich nicht darauf verlassen sollten.

Um zu überprüfen, dass es ein Alias ​​ist, können Sie dies tun:

expect(subject.method(:to_archive).original_name).to eq(:archived!) 
+1

Einfach genial !!! –

+0

Danke, es funktioniert wie vorgesehen –

Verwandte Themen