Capybara发布请求问题

时间:2012-01-31 02:36:09

标签: rspec integration-testing capybara

所以我正在构建一个涉及在页面上提交表单的集成。但由于某种原因,数据库连接在发布请求期间被破坏了?或者服务器没有访问同一个数据库?

正在发生的事情是我获得了社区的页面,但是当我在该页面上提交表单时,处理该帖子的控制器不知道该社区。

我已经尝试过关闭protection_from_forgery了。连接似乎相同(根据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)。

2 个答案:

答案 0 :(得分:0)

确保设置

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

因为Capybara测试通过单独的数据库连接。

答案 1 :(得分:0)

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

Mysql2::Error This connection is still waiting for a result

请改用它。它由迈克·佩勒姆(Mike Perham)撰写,全部归功于他。

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_pool。 这将使您免于许多麻烦。