Ruby 如何获得传递给工厂女孩方法的特征列表?
我如何在(:build)回调后在工厂的Ruby 如何获得传递给工厂女孩方法的特征列表?,ruby,rspec,factory-bot,Ruby,Rspec,Factory Bot,我如何在(:build)回调后在工厂的中获得传递给create的特征?我不知道有哪个工厂女孩功能明确支持这一点。但我可以想到两种局部解决方案,它们可能在特定情况下起作用: 在特征中设置暂时属性: #spec let(:price) { create :price,:some_trait,:my_trait } #factory FactoryGirl.define do factory :price, class: 'Prices::Price' do ... after
中获得传递给create
的特征?我不知道有哪个工厂女孩功能明确支持这一点。但我可以想到两种局部解决方案,它们可能在特定情况下起作用:
在特征中设置暂时属性:
#spec
let(:price) { create :price,:some_trait,:my_trait }
#factory
FactoryGirl.define do
factory :price, class: 'Prices::Price' do
...
after(:build) do |p,e|
# How I can get the traits passed to the create method?
# => [:some_trait,:my_trait]
if called_traits_does_not_include(:my_trait) # fake code
build :price_cost,:order_from, price:p
end
end
...
end
end
trait :my_trait do
using_my_trait
end
factory :price do
transient do
using_my_trait false
end
after :build do |_, evaluator|
if evaluator.using_my_trait
# Do stuff
end
end
end
此方法要求您要跟踪的每个特征都有一个瞬态属性
如果您不需要知道在after:build
回调中使用了哪些特征,但希望跟踪多个特征而不为每个特征添加临时属性,请将该特征添加到trait:after:build
回调中的列表中:
#spec
let(:price) { create :price,:some_trait,:my_trait }
#factory
FactoryGirl.define do
factory :price, class: 'Prices::Price' do
...
after(:build) do |p,e|
# How I can get the traits passed to the create method?
# => [:some_trait,:my_trait]
if called_traits_does_not_include(:my_trait) # fake code
build :price_cost,:order_from, price:p
end
end
...
end
end
trait :my_trait do
using_my_trait
end
factory :price do
transient do
using_my_trait false
end
after :build do |_, evaluator|
if evaluator.using_my_trait
# Do stuff
end
end
end
trait:my_trait do
之后:构建do | |,评估器|
评价者特征