Gas*_*ton 8 ruby-on-rails minitest factory-bot
我一直在为此而奋斗.我希望能够覆盖特征之上的属性.我一直在阅读文档和一些互联网示例,但我无法让它工作.
这就是我想要做的事情:
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
Run Code Online (Sandbox Code Playgroud)
我一直在:
ArgumentError:特征未注册:开始
Dav*_*vid 11
你需要在这里重新考虑一下你的策略 - 你有一个basic_instant_instance不继承的策略instant_instance,因此对trait [:active_now]或start属性一无所知.
您还需要在构建Factory实例时通过将其放在大括号中来评估start_time.否则,它将在start初始化之前进行评估.
尝试以下内容:
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
Run Code Online (Sandbox Code Playgroud)
然后像这样调用它:
create( :instant_instance, start: 1.hours.ago, :active_now)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5784 次 |
| 最近记录: |