Після значного усунення несправностей я зрозумів, що мені потрібно запустити rake spec
один раз (я можу перервати за допомогою control-c), перш ніж я зможу запустити rspec безпосередньо (наприклад, на підмножині наших специфікацій). Ми використовуємо Rails 3.0.7 і RSpec 2.5.0.
Очевидно, що rake виконує деякі важливі завдання / код налаштування бази даних (у нас є власний код у Rakefile кореневого рівня та, можливо, в інших місцях).
Як я можу запустити завдання / код налаштування бази даних тестового рейку без запуску 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:
Схоже, паралельні тести правильно налаштовують свої бази даних, але багато наших специфікацій виходять з ладу.
Слід також зазначити, що запуск specjour prepare
змушує Postgres реєструвати помилки, оскільки він не може знайти бази даних, але створює їх (без таблиць). При наступному запуску помилок не реєструється, але також не створюються таблиці. Можливо, вся моя проблема - це просто помилка prepare
, тому я повідомив про це на github.
Я думаю, що я можу запустити довільний код на кожній тестовій базі даних specjour, встановивши Specjour::Configuration.prepare
в .specjour / hooks.rb, тому, якщо є якісь рейкові завдання або інший код, який мені потрібно запустити, він може там працювати.