gpt4 book ai didi

ruby - RSpec 属性散列

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:54 25 4
gpt4 key购买 nike

谁能给我解释一下这里出了什么问题。学习 RSpec - 我收到一个失败的测试消息 - 预期:“米勒”得到:零。我认为第二个“前 block ”只会将 middle_name 与原始的 @valid_attributes 合并。执行此操作的正确方法是什么。我知道我可以简单地说 p.middle_name 来分配它,但我正在尝试学习 RSpec 的概念。

describe Person do
describe "Validations" do
subject { p }
before { @valid_attributes={first_name: "Joe", last_name: "Sample"} }

...

context "with optional middle name" do
let(:p) { Person.new(@valid_attributes) }
before { @valid_attributes.merge({middle_name: "Miller"}) }

its(:middle_name) { should eq("Miller") }
end
end
end

最佳答案

  1. 您的问题:Hash#merge 返回一个新哈希,您需要 Hash#update

  2. 如何做得更好?这不仅是对测试的建议,也是对一般编程的建议:如果你更新和重用变量,你会遇到一些状态问题;采取更实用的方法。在这种特殊情况下,您应该使用 factory_girl或类似的 gem 可以轻松创建对象,而无需更新知道在哪里的 @valid_attributes

关于ruby - RSpec 属性散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8492290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com