Factory Girl 将参数传递给 trait
Factory Girl pass parameter to trait
我一直在为此苦思冥想。我希望能够在特征之上覆盖属性。我一直在阅读 documentation 和一些互联网示例,但我无法让它工作。
这就是我想做的事情:
test "..." do
#overwrite start_time
middle = create( :basic_instant_instance, start: 1.hours.ago)
end
FactoryGirl.define do
factory :instant_instance do
trait :active_now do
#attributes...
transient do
start nil
end
#overwrite start_time
start_time start.present? ? start : Time.now
end
factory :basic_instant_instance, traits: [:active_now]
end
我不断收到:
ArgumentError: Trait not registered: start
你需要稍微重新考虑一下你的策略 - 你有一个 basic_instant_instance
不继承自 instant_instance
因此对特征 [:active_now] 一无所知或开始属性。
您还需要在构建 Factory 实例时评估 start_time,方法是将其放在大括号中。否则它将在初始化之前被评估。
尝试如下操作:
FactoryGirl.define do
factory :instant_instance do
trait :active_now do
# attributes...
transient do
start { nil }
end
# overwrite start_time
start_time { start.present? ? start : Time.now }
end
end
end
然后这样称呼它:
create(:instant_instance, :active_now, start: 1.hours.ago)
我一直在为此苦思冥想。我希望能够在特征之上覆盖属性。我一直在阅读 documentation 和一些互联网示例,但我无法让它工作。
这就是我想做的事情:
test "..." do
#overwrite start_time
middle = create( :basic_instant_instance, start: 1.hours.ago)
end
FactoryGirl.define do
factory :instant_instance do
trait :active_now do
#attributes...
transient do
start nil
end
#overwrite start_time
start_time start.present? ? start : Time.now
end
factory :basic_instant_instance, traits: [:active_now]
end
我不断收到:
ArgumentError: Trait not registered: start
你需要稍微重新考虑一下你的策略 - 你有一个 basic_instant_instance
不继承自 instant_instance
因此对特征 [:active_now] 一无所知或开始属性。
您还需要在构建 Factory 实例时评估 start_time,方法是将其放在大括号中。否则它将在初始化之前被评估。
尝试如下操作:
FactoryGirl.define do
factory :instant_instance do
trait :active_now do
# attributes...
transient do
start { nil }
end
# overwrite start_time
start_time { start.present? ? start : Time.now }
end
end
end
然后这样称呼它:
create(:instant_instance, :active_now, start: 1.hours.ago)