Использование Spork, Rails3, RSpec2, Capybara и FactoryGirl.
При попытке выполнить тест Capybara я получаю следующую ошибку:
Failure/Error: model = FactoryGirl.create(:model)
ActiveRecord::StatementInvalid:
Mysql2::Error: closed MySQL connection: SHOW TABLES
База данных MySQL, которую использует database.yml, запущена и работает. Я могу подключиться к нему из командной строки, используя те же настройки в 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:
Также важно упомянуть, что я использовал решение 3 для проблемы Capybara Transactional Fixtures , связанной с не 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
Я слышал, что были подобные проблемы при использовании решения 3 с spork в комментарии к решение 2 . Я не уверен, что это те проблемы, о которых говорил комментатор.