【问题标题】:Update single value in ruby hash from super从超级更新红宝石哈希中的单个值
【发布时间】:2014-03-13 03:54:57
【问题描述】:

我正在使用 rspec 编写测试,并尝试使用 let 声明一些变量。

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

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

但后来我看到了如何用 super 覆盖变量,这对于长参数列表很方便:http://myronmars.to/n/dev-blog/2013/02/rspec-2-13-is-released

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

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

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:

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

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

    它将用您在哈希中提供的键值对覆盖原始哈希中的任何键值对以合并它。

    如果你想要一个 doco 的链接以进行合并,apidock 很好:

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

    【讨论】:

    • 谢谢!这是无价的。
    • 那太好了,因为我对 ruby​​ 和 rspec 还很陌生,不知道在哪里查找资料
    • 太棒了!谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2012-12-19
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多