Tło: Mam pewne problemy z klejnotem Thoughtbota „Factory Girl”, który służy do tworzenia obiektów do wykorzystania w testach jednostkowych i innych. Chciałbym podejść do konsoli i przeprowadzić różne rozmowy z Factory Girl, aby sprawdzić, co się dzieje. Na przykład chciałbym tam wejść, są ...
>> Factory(:user).inspect
Wiem, że możesz uruchomić konsolę w różnych środowiskach ...
$ script / console RAILS_ENV = test
Ale kiedy to robię, klasa Factory nie jest dostępna. Wygląda na test_helper.rb
to, że się nie ładuje.
Próbowałem różnych require
połączeń, w tym jednego z absolutną ścieżką do, test_helper.rb
ale zawodzą podobnie do tego:
$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb
Grr. Argh.
ruby-on-rails
ruby
testing
shoulda
Ethan
źródło
źródło
Odpowiedzi:
Dla szyn <3.0
Biegnij
script/console --help
. Zauważysz, że składnia toscript/console [environment]
, co w twoim przypadku jestscript/console test
.Nie jestem pewien, czy musisz wymagać pomocnika testów, czy też środowisko testowe robi to za Ciebie, ale za pomocą tego polecenia powinieneś przynajmniej być w stanie pomyślnie uruchomić się do testowego środowiska.
Na marginesie: to rzeczywiście trochę dziwne, że różne pliki binarne w skrypcie / mają różne sposoby ustawiania środowiska railsowego.
Do szyn 3 i 4
Biegnij
rails c test
. Uzupełnij,bundle exec
jeśli potrzebujesz tego w bieżącym środowisku aplikacji.Do szyn 5 i 6
Biegnij
rails console -e test
.źródło
rails console [environment]
rails server -e test
features/support/helpers.rb
nie było ładowane automagicznie. NieRack::Test
jest też załadowany.W Railsach 3 po prostu zrób
rails console test
lubrails console production
lubrails console development
(co jest wartością domyślną).źródło
Powinno być wszystkim, czego potrzebujesz.
źródło
Dla Rails 5.2.0: "Przekazywanie nazwy środowiska jako zwykłego argumentu jest przestarzałe i zostanie usunięte w następnej wersji Rails. Proszę zamiast tego użyć opcji -e."
źródło
Możesz określić środowisko, w którym polecenie konsoli ma działać.
Przykłady
1) Do inscenizacji
2) Do produkcji
Źródła i szczegółowy opis: Linia poleceń Rails
źródło
David Smith ma rację, po prostu zrób
Polecenie pomocy pokaże, dlaczego to działa:
To bit [środowiska] .
źródło
Dzielę ból pytającego. Są tu naprawdę trzy oddzielne pytania, z których niektóre są odpowiedzią, a inne nie:
Jak uruchomić konsolę w środowisku testowym?
Dla najnowszych wersji Railsów
bundle exec rails c test
lub alternatywnych składni.Jak upewnić się, że test / test_helper.rb zostanie załadowany do tej sesji konsoli?
Coś jak
require './test/test_helper'
powinno to zrobić.Dla mnie zwraca to prawda, wskazując, że nie został jeszcze załadowany, kiedy uruchomiłem konsolę. Jeśli to stwierdzenie zwróci fałsz, po prostu zmarnowałeś kilka naciśnięć klawiszy, ale nadal możesz działać.
Po załadowaniu test_helper, jak wywołać zdefiniowane w nim metody?
W typowym test_helper metody niestandardowe są zwykle definiowane jako metody instancji ActiveSupport :: TestCase. Więc jeśli chcesz wywołać jeden z nich, potrzebujesz instancji tej klasy. Metoda prób i błędów ActiveSupport :: TestCase.new ma jeden wymagany parametr, więc ... przekaż mu coś.
Jeśli twój test_helper ma metodę o nazwie create_user, możesz ją wywołać w ten sposób:
ActiveSupport::TestCase.new("no idea what this is for").create_user
źródło
:random
domyślnainitialize
metodę. Ale wygląda na to, że parametr, którego oczekuje, zostanie zapisany tak, jak@NAME
w utworzonym obiekcie.Upewnij się, że zainstalowałeś GEM i dodałeś następujący wiersz w pliku environment.rb lub test.rb.
źródło
Test Env
Developement Env
źródło
Polecenie do uruchomienia środowiska testowego konsoli rails to
lub
jeśli masz do czynienia z czymś takim jak problem
następnie powinieneś najpierw przygotować testową bazę danych, uruchamiając
źródło