根据FactoryGirl文件:
之后(:build) - 在工厂建成后调用(通过 FactoryGirl.build,FactoryGirl.create)
在我的代码中,我希望回调逻辑根据构建策略(对于FactoryGirl称为strategy_name
)而有所不同。
一些伪代码:
after(:build) do |o, evaluator|
if evaluator.???.strategy_name == 'create'
# logic
elsif evaluator.???.strategy_name == 'build'
# other logic
end
end
有没有人知道如何在回调中利用evaluator
获取strategy_name
?
答案 0 :(得分:0)
在深入了解FactoryGirl源代码后,我无法找到支持这种方式的方法。我最终打开了Evaluator类并添加了一些谓词方法。将以下内容添加到您的spec_helper
,test_helper
或支持文件中。
module FactoryGirl
class Evaluator
def strategy_create?
@build_strategy.class == Strategy::Create
end
def strategy_build?
@build_strategy.class == Strategy::Build
end
def strategy_attributes_for?
@build_strategy.class == Strategy::AttributesFor
end
def strategy_stub?
@build_strategy.class == Strategy::Stub
end
def strategy_null?
@build_strategy.class == Strategy::Null
end
end
end
在你的工厂:
after(:build) do |o, evaluator|
if evaluator.strategy_create?
# logic
elsif evaluator.strategy_build?
# other logic
end
end
我正在使用FactoryGirl 4.4.0。看起来这将适用于> = 3.0.0,但您的里程可能会有所不同。