Jos*_*ver 1 ruby-on-rails factory-bot
我有一系列模型,我已经定义了工厂.我还有一个基于API的模型,它的子类ActiveResource::Base,我(显然)不能从工厂构建 - 当Factory Girl调用时我得到一个例外FooAPI.new.
我改为定义了一个Foo类test/lib.我想在我的测试做的是看是否存在某个符号(如工厂:foo,:bar等等),然后回落到试图直接建立相应的类的对象,使用String#classify.constantize.这是我目前笨重的实现:
objects[name] = begin
klass = name.to_s.classify.constantize
klass.new
rescue
Factory.build name
end
Run Code Online (Sandbox Code Playgroud)
我更喜欢这样的东西:
Factory.exists?(name) ? Factory.build(name) : name.to_s.classify.constantize.new
Run Code Online (Sandbox Code Playgroud)
这样,我就会在构造对象失败时得到一个适当的例外.
更新:感谢fd,我找到了一种方法来做到这一点,无需异常处理!
objects[name] = if Factory.factories.include?(name)
Factory.build name
else
klass = name.to_s.classify.constantize
klass.new
end
Run Code Online (Sandbox Code Playgroud)
在FactoryGirl的更高版本中有效的是
FactoryBot.factories.registered?(name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |