2016-01-21 12 views
5

Article#to_archive là một bí danh cho Article#archived!:Kiểm tra xem một phương pháp là một bí danh cho một phương pháp khác trong rspec

class Article 
    alias to_archive archived! 
end 

tôi cần phải đảm bảo điều này, vì vậy tôi đã viết bài kiểm tra này:

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

Tuy nhiên, Tôi nhận được lỗi

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

Nó được sử dụng để làm việc trong ruby ​​< 2.3 IIRC. Tôi đã thử alias_method, nhưng nó không giúp được gì.

+0

Không nó không. Nó cũng được định nghĩa trên cá thể bài viết, không phải là một phương thức lớp học –

Trả lời

5

Định nghĩa của Method#== không rõ ràng và/hoặc hữu ích, vì vậy bạn không nên dựa vào nó.

Để kiểm tra xem nó là một bí danh, bạn có thể làm điều này:

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

Đơn giản chỉ cần Brilliant! –

+0

Cảm ơn bạn, nó hoạt động như dự định –

Các vấn đề liên quan