从super更新ruby哈希中的单个值

时间:2014-03-13 03:54:57

标签: ruby rspec

我在rspec中编写测试,并试图用let声明一些变量。

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

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

但后来我看到变量可以用super进行过度编写,这对于很长的params列表很方便:http://myronmars.to/n/dev-blog/2013/02/rspec-2-13-is-released

所以我的问题是,如何覆盖原始哈希中的单个值?我尝试过搜索,但只能找到覆盖所有值的方法。是否有类似下面的内容?

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

1 个答案:

答案 0 :(得分:7)

您可以使用Hash#merge

重载哈希变量
let(:hash) { super().merge(:sad => '1') }

它将覆盖原始哈希中的所有键值,并使用您在哈希中提供的键值对来合并它。

如果您想要合并doco的链接,apidock很好:

http://apidock.com/ruby/Hash/merge