ruby-on-rails – 创建记录似乎不会持久存在测试数据库,rspec,fa
根据
factory_girl_rails文档:这是factory_girl build()和create()方法之间的区别:
我知道工厂的强大之处在于它们使您的测试套件变得快速,因为它允许您运行测试而无需通过build()方法触摸数据库.另一方面,create()方法仍会触及数据库,因为它会将记录持久保存到数据库中. 我很困惑,因为我在使用create()后在我的测试中设置了一个断点 > rails控制台说该对象持久保存到数据库(如预期的那样) #someApp/spec/models/user_spec.rb RSpec.describe User,type: :model do it "checks the age on the basic 'User' Factory " do user = create(:user) # should create a user and persist it to the database binding.pry expect(user.age).to eq(28) end end 执行在断点处停止,并且rails控制台打开.我测试持久性,它返回true: user.persisted? => true 但是,我查看表中的test数据库,刷新表,但仍然没有显示记录: 我错过了什么?我认为当你使用create()时,记录将被持久化到数据库.它实际上根本没有保存到数据库中吗? 解决方法
RSpec在交易中运行测试.这意味着在测试开始之前,会打开一个事务,在完成测试之后,它会回滚.这样,测试与数据库接口但没有数据从事务外部可见(因此从RSpec进程外部)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |