使用Spork,Rails3,RSpec2,Capybara和FactoryGirl。为什么我会收到以下错误? “Mysql2 :: Error:关闭MySQL连接:SHOW TABLES”
虽然试图执行一个水豚测试中,我得到以下错误:
Failure/Error: model = FactoryGirl.create(:model)
ActiveRecord::StatementInvalid:
Mysql2::Error: closed MySQL connection: SHOW TABLES
是database.yml中使用MySQL数据库,启动并运行。我可以使用database.yml中的相同设置从命令行连接到它。
测试工作正常,我试图找出为什么测试失败,然后开始给这个错误。
我试着关闭并重新启动数据库无济于事。
从database.yml的
test:
adapter: mysql2
encoding: utf8
reconnect: false
database: mysql_app_test
pool: 5
username: root
password:
host: localhost
从我的规格
require 'spec_helper'
describe "Model", :js => true do
before(:each) do
model = FactoryGirl.create(:model)
visit model_path(model)
end
it "should show the button" do
# Start the lesson
find("#startButton")
end
end
UPDATE:
同样重要的一提的是我一直在使用solution 3到Capybara Transactional Fixtures Issue相关使用非Rack :: Test驱动程序。
我已经把我的解决方案在我spec_helper.rb文件像这样:
Spork.prefork do
...
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || retrieve_connection
end
end
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
...
end
我听说有在solution 2评论类似issues when using solution 3 with spork。我不确定这些是评论者提到的问题。
您是否尝试过从命令行运行SHOW TABLES命令? – 2011-12-15 20:19:15
是的,我可以使用相同的用户/密码/数据库登录到Mysql并运行SHOW TABLES。按预期工作。 – plainjimbo 2011-12-15 22:36:20