2016-01-21 14 views
5

Article#to_archive è un alias per Article#archived!:Controllare se un metodo è un alias a un altro metodo in rspec

class Article 
    alias to_archive archived! 
end 

ho bisogno per garantire questo, così ho scritto questo test:

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

Tuttavia, ricevo un errore

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!)> 

'abituato a lavorare in ruby ​​< 2.3 IIRC. Ho provato alias_method, ma non è stato d'aiuto.

+0

No non è così. È anche definito nell'istanza dell'articolo, non come metodo di classe –

risposta

5

La definizione di Method#== non è chiara e/o utile, quindi non si deve fare affidamento su di essa.

Per verificare che si tratta di un alias, si può fare questo:

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

Simply Brilliant !!! –

+0

Grazie, funziona come previsto –

Problemi correlati