加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 检查方法是否是rspec中另一个方法的别名

发布时间:2020-12-17 03:18:32 所属栏目:百科 来源:网络整理
导读:文章#to_archive是Article#archiveived的别名: class Article alias to_archive archived!end 我需要确保这一点,所以我写了这个测试: describe '#to_archive' do it 'is an alias to #archived!' do expect(subject.method(:to_archive)).to eq(subject.me
文章#to_archive是Article#archiveived的别名:

class Article
  alias to_archive archived!
end

我需要确保这一点,所以我写了这个测试:

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

但是,我收到一个错误

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

它曾经用于ruby< 2.3 IIRC.我尝试了alias_method,但它没有帮助.

解决方法

方法#==的定义不明确和/或有用,因此您不应该依赖它.

要检查它是否为别名,您可以执行以下操作:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读