Nei*_*eil 4 ruby rspec ruby-on-rails rspec-rails factory-bot
根据factory_girl_rails文档:这是factory_girl build()和create()方法之间的区别:
#返回未保存的用户实例
user = build(:user)
#返回已保存的用户实例
user = create(:user)
我知道工厂的强大之处在于它们使您的测试套件变得快速,因为它允许您运行测试而无需通过该build()方法触摸数据库.create()另一方面,该方法仍然触摸数据库,因为它将记录持久存储到数据库中.
我很困惑,因为我在使用后在测试中设置了一个断点 create()
test/test.log该对象被保存到数据库显示(预期)但是,当我看测试数据库中的表:它不存在(不期望我希望看到在数据库中的对象)
#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
Run Code Online (Sandbox Code Playgroud)执行在断点处停止,并且rails控制台打开.我测试持久性,它返回true:
user.persisted?
=> true
Run Code Online (Sandbox Code Playgroud)
但是,我查看表中的测试数据库,刷新表,但仍然没有显示记录:
我错过了什么?我以为当你使用create()记录时会被持久化到数据库中.它实际上根本没有保存到数据库中吗?
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |