Rspec 水豚请求后问题
因此,我正在构建一个集成,包括在页面上提交表单。但是由于某种原因,在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 水豚请求后问题,rspec,integration-testing,capybara,Rspec,Integration Testing,Capybara,因此,我正在构建一个集成,包括在页面上提交表单。但是由于某种原因,在post请求期间数据库连接断开了吗?或者服务器没有访问同一个数据库 发生的事情是我得到了一个社区的页面,但是当我在该页面上提交表单时,处理帖子的控制器对该社区一无所知 我已经试过关闭防伪保护。这些连接似乎是相同的(根据AR:Base.connection) 我正在使用集成capybara+rspec的共享连接池方法 (ActiveRecord::Base.shared_connection=ActiveRecord::Base.
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
您还需要安装gemconnection\u pool
。
这将使您免于许多麻烦。我实际上是想通过要求它通过相同的连接来避免这种情况。好的,有没有办法验证共享连接是否正常工作?您是否可以取出共享连接并使用transactional\u fixtures=false来查看问题是否消失?