Jak uruchomić Rails console w środowisku testowym i załadować test helper.rb?
Tło: mam problemy z klejnotem "Factory Girl" Thoughtbota, który służy do tworzenia obiektów do wykorzystania w testach jednostkowych i innych. Chciałbym przejść do konsoli i uruchomić różne telefony Factory Girl, aby sprawdzić, co się dzieje. Na przykład, chciałbym tam wejść...
>> Factory(:user).inspect
Wiem, że można uruchomić konsolę w różnych środowiskach...
$ script/console RAILS_ENV=test
Ale kiedy to robię, Klasa Fabryczna nie jest dostępna. Wygląda jak chociaż {[2] } nie jest ładowany.
Próbowałem różnych połączeń require
, w tym jednego z absolutną ścieżką do test_helper.rb
, ale zawiodły 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.
8 answers
Do Szyn
Run script/console --help
. Zauważysz, że składnia to script/console [environment]
, czyli w Twoim przypadku script/console test
.
Nie jestem pewien, czy potrzebujesz pomocy testowej, czy środowisko testowe robi to za ciebie, ale za pomocą tej komendy powinieneś przynajmniej być w stanie pomyślnie uruchomić test env.
Jako notatka poboczna: to rzeczywiście dziwne, że różne binaria w script / mają różne sposoby ustawiania środowiska rails.
Dla Rails 3 i 4
Run rails c test
. Prepend bundle exec
jeśli potrzebujesz tego dla bieżącego środowiska aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 17:41:46
W Rails 3, po prostu wykonaj rails console test
LUB rails console production
lub rails console development
(co jest domyślne).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-08 20:57:28
script/console test
Powinno być wszystko, czego potrzebujesz.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-26 18:24:06
David Smith ma rację, po prostu zrób
script/console test
Polecenie help pokaże, dlaczego to działa:
$ script/console -h
Usage: console [environment] [options]
-s, --sandbox Rollback database modifications on exit.
--irb=[irb] Invoke a different irb.
--debugger Enable ruby-debugging for the console.
To [środowisko] bit.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-09 19:44:26
Możesz określić środowisko, w którym powinna działać Komenda konsoli.
rails c [environment]
Przykłady
1) Do Inscenizacji
rails c staging
2) Do Produkcji
rails c production
Dla źródła i szczegółowego opisu: Linia poleceń Rails
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 07:45:38
Upewnij się, że zainstalowałeś GEM i dodałeś następującą linię w swoim środowisku.rb lub test.plik rb.
config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-26 16:54:23
Podzielam ból askera. Istnieją naprawdę trzy oddzielne pytania tutaj, Niektóre z nich są rozwiązywane, niektóre nie:
-
Jak uruchomić konsolę w środowisku testowym?
Dla najnowszych wersji Rails,
bundle exec rails c test
, lub dla tego alternatywne składnie. -
Jak upewnić się, że test / test_helper.rb jest załadowany do tej sesji konsoli?
Coś w rodzaju
require './test/test_helper'
powinno to zrobić.Dla mnie to zwraca true, wskazując, że nie było już załadowany, gdy uruchomiłem konsolę. Jeśli to stwierdzenie zwróci false, to zmarnowałeś kilka naciśnięć klawiszy, ale nadal jesteś gotowy.
-
Po załadowaniu test_helper, jak wywołać zdefiniowane w nim metody?
W typowym test_helper, metody niestandardowe są zazwyczaj definiowane jako metody instancji Activesupport:: TestCase. Więc jeśli chcesz zadzwonić do jednego z nich, potrzebujesz instancji tej klasy. Metodą prób i błędów, ActiveSupport:: TestCase.Nowy ma jeden wymagany parametr, tak...podaj 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-19 19:15:45
Test Env
rails console test # or just rails c test
Developement Env
rails console # or just rails c
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-14 07:30:00