Rspec 水豚请求后问题

Rspec 水豚请求后问题,rspec,integration-testing,capybara,Rspec,Integration Testing,Capybara,因此,我正在构建一个集成,包括在页面上提交表单。但是由于某种原因,在post请求期间数据库连接断开了吗?或者服务器没有访问同一个数据库 发生的事情是我得到了一个社区的页面,但是当我在该页面上提交表单时,处理帖子的控制器对该社区一无所知 我已经试过关闭防伪保护。这些连接似乎是相同的(根据AR:Base.connection) 我正在使用集成capybara+rspec的共享连接池方法 (ActiveRecord::Base.shared_connection=ActiveRecord::Base.

因此,我正在构建一个集成,包括在页面上提交表单。但是由于某种原因,在post请求期间数据库连接断开了吗?或者服务器没有访问同一个数据库

发生的事情是我得到了一个社区的页面,但是当我在该页面上提交表单时,处理帖子的控制器对该社区一无所知

我已经试过关闭防伪保护。这些连接似乎是相同的(根据AR:Base.connection)

我正在使用集成capybara+rspec的共享连接池方法

(ActiveRecord::Base.shared_connection=ActiveRecord::Base.connection)

我使用的是Rails 3.0.11、rspec 2.6.4、capybara(1.0.0)和capybara webkit(0.8.0)。

请确保设置

  RSpec.configure do |config|
    config.use_transactional_fixtures = false
  end

由于Capybara测试是通过一个单独的数据库连接进行的。

实际上,共享连接黑客存在一些问题。例如,如果您使用gem mysql2,您将开始看到一些错误,如:

Mysql2::Error This connection is still waiting for a result
请改用这个。这本书是迈克·佩厄姆写的,全部归功于他

class ActiveRecord::Base
  mattr_accessor :shared_connection
  @@shared_connection = nil

  def self.connection
    @@shared_connection || ConnectionPool::Wrapper.new(:size => 1) { retrieve_connection }
  end
end

ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
您还需要安装gem
connection\u pool

这将使您免于许多麻烦。

我实际上是想通过要求它通过相同的连接来避免这种情况。好的,有没有办法验证共享连接是否正常工作?您是否可以取出共享连接并使用transactional\u fixtures=false来查看问题是否消失?