0

问题:我如何在一个字段中同时使用序列和瞬态属性?

背景:我有工厂,有一个名字。名称是序列以保持其唯一性。然而,在少数规格中,我需要它设置我选择的名称,以便我可以预测它。这不是 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

4

2 回答 2

1

您可以使用 FactoryGirl 使用序列创建属性哈希,然后合并您想要对该哈希进行的任何更改:

new_name = 'Bridge from '+Time.now.to_s
attr = FactoryGirl.attributes_for(:historical_bridge).merge(:name => new_name)

然后你可以做一些事情,比如创建一个具有这些自定义属性的对象:

HistoricalBridge.create(attr)
于 2013-02-08T18:37:40.437 回答
0

我认为您不应该使用预定义的名称而不是序列,而是检查以下内容:

let(:bridge) { create :historical_bridge }

it { HistoricalBridge.something.name.should == bridge.name }
于 2013-02-08T18:46:38.393 回答