Ruby 工厂-序列为回退的字段
问题:如何对一个字段同时使用序列和瞬态属性 背景:我有一个工厂,它有一个名字。该名称按顺序排列,以保持其唯一性。然而,在少数规格中,我需要它设置我选择的名称,以便我可以预测它的预期。这不是Rails项目 在我的脑海中,它看起来像Ruby 工厂-序列为回退的字段,ruby,rspec2,factory-bot,Ruby,Rspec2,Factory Bot,问题:如何对一个字段同时使用序列和瞬态属性 背景:我有一个工厂,它有一个名字。该名称按顺序排列,以保持其唯一性。然而,在少数规格中,我需要它设置我选择的名称,以便我可以预测它的预期。这不是Rails项目 在我的脑海中,它看起来像name{attribute_from_create|u call|FactoryGirl.generate:name}。但是我不知道如何获得我给create方法的属性 工厂: FactoryGirl.define do sequence :name do |n|
name{attribute_from_create|u 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
factory的用法:
FactoryGirl.create:historical_bridge,名称:'bridge from'+Time.now.to_s
您可以使用FactoryGirl创建具有序列的属性散列,然后合并对该散列所做的任何更改:
new_name = 'Bridge from '+Time.now.to_s
attr = FactoryGirl.attributes_for(:historical_bridge).merge(:name => new_name)
然后你可以做一些事情,比如用这些自定义属性创建一个对象:
HistoricalBridge.create(attr)
我认为您不应该使用预定义的名称而不是序列,而应该检查如下内容:
let(:bridge) { create :historical_bridge }
it { HistoricalBridge.something.name.should == bridge.name }
最后,factory_girl不是快速规范的最佳方法,但它超出了当前的范围