После значительного устранения неполадок, я понял, что мне нужно запустить 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
Примечание. my 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 или другой код, который мне нужно запустить, он может работать там.