如果我使用FactoryBot创建记录,但验证失败,它将仅返回未保存的实例。 有没有办法让FactoryBot抛出错误来帮助我及早调试问题?
if in_item(resto, item[1]) and in_item(resto, item[2]):
测试将继续,最终会因为我的对象无效而在其他地方失败。
我的第一个想法是创建一个特征,并以某种方式将其默认为所有工厂使用,但是我没有发现一种简单的方法。
FactoryBot.create(:house, some_options)
=> #<House id: nil, ...>
答案 0 :(得分:4)
尝试“爆炸”方法。
house = FactoryBot.build(:house, options_hash)
house.save!
不幸的是,FactoryBot
没有附带create!
方法,但是ActiveRecord附带了。
在Rails中,通过使用ActiveRecord
而不是:create!
方法,可以使:create
在记录无效时引发错误。
你可以做
House.create!(FactoryBot.attributes_for(:house, options_hash))
答案 1 :(得分:2)
factory_bot使用save!
作为创建实例(here is the configuration on Github)的默认值,因此,如果有任何验证错误,您应该立即得到一个错误。您是否有机会在工厂中使用自定义to_create
?您能提供完整的工厂吗?