2010-09-03 8 views
5

Mam 30 specyfikacji w moim pliku foo_controller_spec.rb, a po uruchomieniu całego pliku przy użyciu specyfikacji otrzymuję 4 niepowodzenia i 2 oczekujące. Kiedy uruchomię 4 niesprawne specyfikacje indywidualnie, 3 z nich nadal się nie powiedzie, ale jeden z nich mija. Na początku myślałem, że to problem z bazą danych, że dane nie były prawidłowo usuwane między kolejnymi uruchomieniami. Więc zainstalowałem database_cleaner (http://github.com/bmabey/database_cleaner) i dodaje ten kod do mojego spec_helper:indywidualna specyfikacja przechodzi po uruchomieniu, ale kończy się niepowodzeniem, gdy wszystkie specyfikacje są uruchomione.

config.before(:suite) do 
    DatabaseCleaner.strategy = :truncation 
    DatabaseCleaner.clean_with(:truncation) 
end 

config.before(:each) do 
    DatabaseCleaner.start 
    Sham.reset 
    login 
end 

config.after(:each) do 
    DatabaseCleaner.clean 
end 

Teraz gdy uruchamiam moje widowisko widzę, że tabele są obcinane pomiędzy każdym ciemno, więc wiem, że to działa, ale spec nadal nie po uruchomieniu ze wszystkimi innymi specyfikacjami, ale przechodzi, gdy jest uruchamiany sam. Czego tu mi brakuje?

Odpowiedz

6

Miałem dokładnie ten sam problem i był wychodzący z mojego umysłu!

Śledziłem taki problem (z Textmate): wybierz pliki w szufladzie projektu (wiele plików), a następnie przejdź do "Pakiety> Rspec> Uruchom przykłady w wybranych plikach/katalogach".

Sztuką jest sprawdzenie, który plik powoduje interferencję z innymi.

Dla mnie zmienił się plik I18n.locale w jednym pliku, który spowodował zmianę ustawień regionalnych dla wszystkich innych przykładów!

straciłem kilka godzin będzie orzechy z tym ...

+0

Dobra poprawka! Miałem ten sam problem i odkryłem, że "włącz Foo" poza jakimkolwiek blokiem opisu czyni te metody dostępnymi dla wszystkich specyfikacji. Powodowało to błąd podczas uruchamiania pakietu jako całości. – r00k

+1

jak mogę to przetestować z Sublime Text i moim terminalem? – Ricbermo

1

Tylko w przypadku, to pomaga innym: Miałem podobny problem i okazało się, miałem

  • bezpańskich Rspec.configures które były nadrzędne dla wszystkich testów w dół linii
  • WebMocks włączony jednego badania, które wydają się kaskadowo na następujące na testach aż ja wliczone w spec_helper by połączenia były domyślnie

    R Spec.configure do | config | config.before (: suite) do WebMock.allow_net_connect!

+0

Też miałem ten sam problem z @Ben, cieszę się, że napisałeś. –

0

Miałem podobny problem dzisiaj, który zajęło sporo czasu, aby rozwiązać.

ta zawodzi:

module SomeModule 
    describe SomeController do 
    it 'does something' 
    end 
end 

przechodzi to:

describe SomeModule::SomeController do 
    it 'does something' 
end 

Kwestia ma do czynienia z scopingu.

Powiązane problemy