Объекты не отображаются в тестовой базе данных при запуске спецификации - PullRequest
1 голос
/ 04 октября 2010

При сохранении объекта путем вызова Entity.create(:name => "Entity1") из консоли Rails в тестовой среде (RAILS_ENV=test rails console) объект «Entity1» правильно отображается в тестовой базе данных (MySQL) при проверке его с помощью клиента mysql.Но при выполнении тех же действий в файле rspec (entity.create(:name => "Entity1"); sleep 100) и проверке тестовой базы данных во время функции сна она оказывается совершенно пустой.Почему так?Где находится сохраненная запись?(Мне нужно это в то время в базе данных, из-за некоторого тестирования Sphinx.)

Я просто хотел бы добавить, что запрос созданного Entity в спецификации работает нормально (даже если он не появляется в базе данныхклиент).Таким образом, кажется, что Rails делает здесь некоторые чудеса, которые я не совсем понимаю.

Еще более странно (по крайней мере, для меня ;-)) ... при выполнении Entity.connection.commit_db_transaction() после создания объектазатем запись внезапно появляется в базе данных (но больше не очищается автоматически).

1 Ответ

1 голос
/ 04 октября 2010

Решением этой проблемы является особенность Rails (или RSpec ... не уверен в этом) с именем Transactional Fixtures. При выключении в spec_helper.rb config.use_transactional_fixtures = false все записи внезапно появляются в базе данных после создания объектов (но это может привести к снижению производительности теста).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...