Po znaczącym rozwiązywaniu problemów stwierdziłem, że muszę uruchomić rake spec
raz (mogę przerwać za pomocą control-c), zanim będę mógł bezpośrednio uruchomić rspec (np. Na podzbiorze naszych specyfikacji). Używamy Rails 3.0.7 i RSpec 2.5.0.
Najwyraźniej rake uruchamia kilka ważnych zadań / kodu konfiguracji bazy danych (mamy własny kod w pliku Rakefile na poziomie głównym i prawdopodobnie w innych miejscach).
Jak mogę uruchomić zadania / kod konfiguracji bazy danych testu rake bez uruchamiania rake spec
?
Oprócz możliwości uruchamiania rspec na podzbiorze plików, używam specjour do rozprzestrzeniania naszych specyfikacji na wiele rdzeni (nie udało mi się jeszcze rozpowszechnić ich w sieci LAN), ale widzę to samo zachowanie, co przy uruchamianiu rspec bezpośrednio: muszę uruchomić rake spec
na każdej testowej bazie danych (zakładając dwa rdzenie) przed specjour działa:
rake spec TEST_ENV_NUMBER=1
control-c (after tests start)
rake spec TEST_ENV_NUMBER=2
control-c (after tests start)
specjour
Uwaga: mój plik config / database.yml ma ten wpis do testu (jak to jest typowe dla równoległych klejnotów testowych):
test:
adapter: postgresql
encoding: unicode
database: test<%=ENV['TEST_ENV_NUMBER']%>
username: user
password:
Paralel_tests wydaje się poprawnie konfigurować swoje bazy danych, ale wiele z naszych specyfikacji zawodzi.
Powinienem również wspomnieć, że uruchomienie specjour prepare
powoduje, że Postgres rejestruje błędy, że nie może znaleźć baz danych, ale je tworzy (bez tabel). Przy kolejnym uruchomieniu nie są rejestrowane żadne błędy, ale także nie są tworzone żadne tabele. Możliwe, że cały mój problem jest po prostu błędem prepare
, więc zgłosiłem to na githubie.
Myślę, że mogę uruchomić dowolny kod na każdej specjour testowej bazie danych, ustawiając Specjour::Configuration.prepare
w .specjour / hooks.rb, więc jeśli są jakieś zadania rake'u lub inny kod, który muszę uruchomić, może tam działać.