AJc*_*dez 12 unit-testing ruby-on-rails factory-bot
我有(简化)工厂定义如下:
factory :league do
acronym 'NBA'
end
factory :division do
league
end
Run Code Online (Sandbox Code Playgroud)
分部属于联盟.当我定义这个工厂时,我的假设就是创建一个联盟,并且这个联盟会一次又一次地被重复使用,以使分区成为真正的联盟.
相反,我在第二次通话时遇到错误,FactoryGirl.create(:division)因为联盟acronym应该是独一无二的.
class League < ActiveRecord::Base
validates :acronym, uniqueness: true
end
Run Code Online (Sandbox Code Playgroud)
在测试中导致以下中断
ActiveRecord :: RecordInvalid:验证失败:已经删除了缩略词
我该如何解决这个问题,最好不要在测试设置中创建层次结构?
如果我想要实现的目标比factory_girl更好,请建议
用于initialize_with你的联赛定义.
见http://robots.thoughtbot.com/post/16196616388/factory-girl-2-5-gets-custom-constructors
然后你可以发出find_or_create_by_acronym保证它创建一次.