После серьезного устранения неполадок я понял, что мне нужно запустить rake spec
один раз (я могу прервать работу с помощью control-c), прежде чем я смогу запустить rspec напрямую (например, на подмножестве наших спецификаций). Мы используем Rails 3.0.7 и RSpec 2.5.0.
Очевидно, что rake выполняет некоторые важные задачи / код настройки базы данных (у нас есть собственный код в Rakefile корневого уровня и, возможно, в других местах).
Как я могу запустить задачи / код настройки базы данных rake test без запуска rake spec
?
Помимо возможности запускать rspec для подмножества файлов, я использую specjour для распространения наших спецификаций по нескольким ядрам (пока не удалось распространить их по локальной сети), но я вижу то же поведение, что и при запуске rspec напрямую: мне нужно запустить rake spec
каждую тестовую базу данных (при условии двух ядер), прежде чем specjour заработает:
rake spec TEST_ENV_NUMBER=1
control-c (after tests start)
rake spec TEST_ENV_NUMBER=2
control-c (after tests start)
specjour
Примечание: в моем config / database.yml есть эта запись для тестирования (как это обычно бывает для гемов параллельного тестирования):
test:
adapter: postgresql
encoding: unicode
database: test<%=ENV['TEST_ENV_NUMBER']%>
username: user
password:
Кажется, что parallel_tests правильно настраивает свои базы данных, но многие из наших спецификаций не работают.
Я также должен упомянуть, что бег specjour prepare
заставляет Postgres регистрировать ошибки, что он не может найти базы данных, но создает их (без таблиц). При последующем запуске ошибки не регистрируются, но и таблицы не создаются. Возможно, вся моя проблема - это просто ошибка prepare
, поэтому я сообщил об этом на github.
Я думаю, что могу запустить произвольный код в каждой тестовой базе данных specjour, установив Specjour::Configuration.prepare
в .specjour / hooks.rb, поэтому, если есть какие-либо задачи rake или другой код, который мне нужно запустить, он может там работать.