问题:如何在一个字段中使用序列和瞬态属性?
背景:我有工厂,有一个名字。名称是序列,以保持其独特性。然而,在少数规格中我需要它设置我选择的名称,以便我可以预期它。这不是Rails项目。
在我看来,它看起来像name {attribute_from_create_call||FactoryGirl.generate :name}
。但我不知道如何获得我赋予create方法的属性
厂:
FactoryGirl.define do
sequence :name do |n|
'Testing Bridge '+n.to_s
end
factory :historical_bridge do
name {FactoryGirl.generate :name}
end
end
工厂用法:FactoryGirl.create :historical_bridge, name: 'Bridge from '+Time.now.to_s
答案 0 :(得分:1)
您可以使用FactoryGirl创建包含序列的属性哈希值,然后合并到您想要的哈希值的任何更改中:
new_name = 'Bridge from '+Time.now.to_s
attr = FactoryGirl.attributes_for(:historical_bridge).merge(:name => new_name)
然后你可以做一些事情,比如用这些自定义属性创建一个对象:
HistoricalBridge.create(attr)
答案 1 :(得分:0)
我认为您不应该使用预定义的名称而不是序列,但请检查以下内容:
let(:bridge) { create :historical_bridge }
it { HistoricalBridge.something.name.should == bridge.name }