gpt4 book ai didi

ruby-on-rails - 如果给定的工厂存在,我可以问 Factory Girl 吗?

转载 作者:行者123 更新时间:2023-12-05 08:21:28 25 4
gpt4 key购买 nike

我有一系列模型,并为其定义了工厂。我还有一个基于 API 的模型,它是 ActiveResource::Base 的子类,我(显然)不能从工厂构建它——当 Factory Girl 时我得到一个异常调用 FooAPI.new

我在 test/lib 中定义了一个 Foo 类。我想在测试中做的是查看给定符号的工厂是否存在(例如 :foo:bar 等),然后回退到尝试使用 String#classify.constantize 直接构造适当类的对象。这是我目前笨拙的实现:

  objects[name] = begin
klass = name.to_s.classify.constantize
klass.new
rescue
Factory.build name
end

我更喜欢这样的东西:

Factory.exists?(name) ? Factory.build(name) : name.to_s.classify.constantize.new

那样的话,我会在构建对象失败时得到一个适当的异常。

更新:感谢fd ,我找到了一种无需异常处理的方法!

  objects[name] = if Factory.factories.include?(name)
Factory.build name
else
klass = name.to_s.classify.constantize
klass.new
end

最佳答案

在更高版本的 FactoryBot 中起作用的是

FactoryBot.factories.registered?(name)

关于ruby-on-rails - 如果给定的工厂存在,我可以问 Factory Girl 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com