Rspec - 使用.attributes来干涸

时间:2015-05-09 02:12:59

标签: ruby-on-rails rspec

我有两个实例,它们之间的唯一区别是一个值(完整)我希望使用这样的东西,但它不起作用:

let(:section){Section.new(:date => '2015-05-01', :task_id => 1, :trade_id => 1, :schedule_id => 1)}
let(:complete_section){Section.new(section.attributes, complete: true)}

当我这样做时,属性从section.attributes设置,但忽略complete: true

我是否有另一种方法可以从基础中获取属性:部分所以我不需要每次都写入所有属性?

2 个答案:

答案 0 :(得分:4)

确实

let(:complete_section){Section.new(section.attributes.merge(complete: true))}

做你想做的事?

答案 1 :(得分:1)

此问题的常见解决方案是FactoryGirl,您可以在其中定义模板并覆盖必要的值:

let(:section) { FactoryGirl.build(:section) }
let(:complete_section) { FactoryGirl.build(:section, complete: true}