Mam dziwną sytuację, w której jeśli uruchomię indywidualny plik specyfikacji modelu rspec wszystkie przykłady są zielone, jeśli przetestuję cały katalog specyfikacji/modeli, wszystkie moje przykłady są zielone. Jeśli przetestuję kontrolery, wszystkie przekażą kolor zielony. Jeśli przetestuję cały pakiet (przez specyfikację rspec), otrzymam awarie - Jeśli usuniemy testy kontrolera, wszystko będzie zielone. Teraz spodziewam się, że jest to całkowicie samowystarczalne, ale nie mogę tego pojąć.Testowanie całego pakietu Rspec kończy się niepowodzeniem
Zawęziłem to do konkretnych przykładów w testach kontrolera - które sprawiają, że przykłady w specyfikacji modelu zawodzą.
np. w notes_controller_spec.rb jeśli linia ta jest obecna
Note.any_instance.stubs(:valid?).returns(false)
powoduje awarię w moich modelach/account_spec.rb
Failure/Error: @account.all_notes.should have(2).notes
ArgumentError:
comparison of Note with Note failed
./app/models/account.rb:293:in `sort'
gdzie jest linia 293;
(self.notes + self.transactions.map(&:notes).flatten).sort {|a,b| a.created_at <=> b.created_at }
Jestem prawie pewny, że to będzie jedna z tych chwil na twarzy, więc bądź dla mnie łagodny!
'' created_at' mogą być zerowe dla jednej Obligacji, który oznacza, że blok sortowania byłoby porównanie '' zerowe przeciwko Fixnum', co spowodowałoby, że blok zwróciłby 'nil', co spowodowałoby wysadzenie w rodzaju" ArgumentError ", który widzisz.Czy na pewno wszystkie twoje instancje zostały zapisane w bazie danych po uruchomieniu tego wiersza? Czy to możliwe, że baza danych nie jest opróżniana przed każdym przykładem? –
Mam podobny problem. Mam wrażenie, że może to być związane z [tym problemem rspec] (https://github.com/rspec/rspec-mocks/issues/54), chociaż twierdzi, że zostało naprawione. –
Przepraszam, przypadkowo trafiłam enter, więcej szczegółów: Zajmuję się metodą na każdym wystąpieniu modelu - innym modelem niż ten, który testuję w konkretnym zestawie testów. Kiedy uruchomię inny zestaw testów, które wymagają tej metody, nie zostanie znaleziony. Usunięcie kodu w testach w jednym pliku powoduje przejście drugiego pliku. Naprawdę denerwujące. Eksperymentowałem z instalowaniem różnych wersji oprogramowania rspec. –