从super更新ruby hash中的单个值

kmbjn2e3  于 2023-03-22  发布在  Ruby
关注(0)|答案(1)|浏览(92)

我在RSpec中编写测试,并尝试使用let声明一些变量:

describe 'my_test' do
    let(:params) {{
        :happy => 1,
        :sad => 0,
    }}

    context 'mixed' do
        let(:params) {{
            :happy => 1,
            :sad => 1,
        }}
    end
end

但是后来我看到了如何用super覆盖变量,这对于长的参数列表来说很方便:https://rspec.info/blog/2013/02/rspec-2-13-is-released/
所以我的问题是:如何覆盖原始散列中的单个值?我尝试过搜索,但只能找到覆盖所有值的方法。是否存在类似以下的方法?

let(:hash) { super().updatehash('sad', '1') }
w80xi6nr

w80xi6nr1#

可以使用Hash#merge重载哈希变量

let(:hash) { super().merge(:sad => '1') }

它将用您在散列中提供的键-值对覆盖原始散列中的任何键-值,以便在其上进行合并。
如果你想要一个合并文档的链接,apidock是个不错的选择:
http://apidock.com/ruby/Hash/merge

相关问题