Ruby on rails Capybara功能测试不提交数据库事务

Ruby on rails Capybara功能测试不提交数据库事务,ruby-on-rails,database,rspec,capybara,Ruby On Rails,Database,Rspec,Capybara,我正在使用Machinist创建我的测试用户,我希望在使用Capybara运行的每个测试之前登录这些用户: include Capybara::DSL include ActionController::UrlWriter before do SslRequirement.disable_ssl_check = true user = User.make visit new_user_session_path fill_in('username', with: user.e

我正在使用Machinist创建我的测试用户,我希望在使用Capybara运行的每个测试之前登录这些用户:

include Capybara::DSL
include ActionController::UrlWriter

before do
  SslRequirement.disable_ssl_check = true
  user = User.make


  visit new_user_session_path
  fill_in('username', with: user.email)
  fill_in('password', with: '12345')
  click_button('submit')
end

it "responds as expected" do
   # ...
end
现在,当用户是使用
user.make创建的时,我可以通过
user.all
访问它。当它事实上还没有在数据库中持久化时,这是因为

ActiveRecord::Base.connection.open_transactions == 1
我可以通过做一个测试来解决这个问题

ActiveRecord::Base.connection.commit_db_transaction

User.make
之后,但我宁愿正确地修复此问题。这是我丢失的水豚配置吗?免责声明:使用
rails2.3
rspec1.3

时,您不会显示您使用的是哪种驱动程序,但通常在使用Capybara时,您不应该使用事务进行测试(是的,存在允许使用它的潜在解决方案,但它们都有副作用)。查看并查看数据库\u cleaner gem with truncation-这里有一篇关于它的博客文章,这篇文章在您使用的gem时代应该是很好的-

就像在其他地方预先完成整个设置一样?我添加了一个链接到一篇关于它的博客文章,这篇文章应该对您使用的rails和rspec时代很好