使用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