Mam model, który pobiera swoje dane z obiektu analizatora składni. Myślę, że klasa parser powinna żyć w katalogu lib/(chociaż można mnie przekonać, że powinna żyć gdzieś indziej). Pytanie brzmi: Gdzie powinna znajdować się moja jednostka testująca dla klasy parsera? A jak mogę się upewnić, że są uruchamiane za każdym razem, gdy uruchamiam test prowizji?Szyny: Jak przetestować kod w katalogu lib /?
Odpowiedz
W aplikacji Rails, nad którą pracuję, postanowiłem po prostu umieścić testy w katalogu test\unit
. Ja też je przez gniazdo modułu/katalogu, a także, na przykład:
lib/a.rb => test/unit/a_test.rb
lib/b/c.rb => test/unit/b/c_test.rb
Dla mnie to była ścieżka ostatniego oporu, jak te badania prowadził bez konieczności dokonywania jakichkolwiek innych zmian.
Oto jeden ze sposobów:
Tworzenie lib/tasks/test_lib_dir.rake
z następującym
namespace :test do
desc "Test lib source"
Rake::TestTask.new(:lib) do |t|
t.libs << "test"
t.pattern = 'test/lib/**/*_test.rb'
t.verbose = true
end
end
naśladować strukturę swojej lib
reż pod test
dir, zastępując kod lib z odpowiednich testów.
Uruchom rake test:lib
, aby uruchomić testy lib.
Jeśli chcesz, aby wszystkie testy były uruchamiane po wywołaniu rake test
, możesz dodać następujące elementy do nowego pliku rake.
lib_task = Rake::Task["test:lib"]
test_task = Rake::Task[:test]
test_task.enhance { lib_task.invoke }
W jakiś sposób nie ładuje środowiska (w szczególności 'ActiveSupport'' fixtures') i nie ma sposobu, aby zmusić go do rakefile. –
Hej, próbowałem twojego rozwiązania i 'test rake: lib' uruchamia mój test, ale' test rake'a 'nie działa. Skopiowałem to dosłownie. Oto link do mojej zawartości pliku: http://pastebin.com/FHMXU6vG Z góry dziękuję! – robert
Szukałem zrobić to samo, ale z rspec & Autospec i zajęło trochę kopania, aby dowiedzieć się dokładnie tam, gdzie były one coraz listę wzorców katalogów/plików, które podyktowane które pliki testowe do uruchomienia. Ostatecznie znalazłem to w lib/zadań/rspec.rake: 86
[:models, :controllers, :views, :helpers, :lib, :integration].each do |sub|
desc "Run the code examples in spec/#{sub}"
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
end
end
I umieścił moje testy w nowym katalogu Spec/libs gdy plik rpsec.rake został skonfigurowany wyglądać w specyfikacji/lib. Po prostu zmiana nazwy bibliotek -> lib załatwił sprawę!
Mam domyślnie '/ lib' w moim projekcie. Niestety, 'test rake'u 'nie nadciąga plików, więc jest to tylko RSpec i muszę użyć powyższego rozwiązania. –
Aby nie definiować dodatkowych zadań rake w celu uruchamiania testów z niestandardowych zdefiniowanych folderów, można również uruchomić je za pomocą polecenia rake test:all
. Struktura folderów testów dla folderu lib
lub dowolnego innego folderu niestandardowego zależy od Ciebie. Ale wolę kopiować je w klasach: lib
jest dopasowany do test/lib
, app/form_objects
do test/form_objects
.
Łatwy i czysty sposób polega na utworzeniu katalogu pod kontrolą test/unit/lib. Następnie stwórz test jako test/unit/lib/foo_test.rb odpowiadający lib/foo.rb. Żadne nowe zadania rake'u nie są wymagane i możesz zagnieździć więcej katalogów, jeśli jest to konieczne, aby dopasować strukturę katalogów lib.
Zastosowanie:
[spring] rake test:all
uruchomić wszystkie testy, w tym utworzonych katalogów (jak [root]/test/lib/
).
Pomiń [spring]
, jeśli tou go nie używa.
rake przerwany! Nie wiem, jak zbudować zadanie "test: wszystko" – Intentss
Od Rails 4.0:
rake test:all # Run all tests in any subdir of `test` without resetting the DB
rake test:all:db # Same as above and resets the DB
Od Rails 4.1, przedefiniować test:run
o dodatkowe zadania podczas uruchamiania rake
lub rake test
:
# lib/tasks/test.rake
namespace :test do
Rake::Task["run"].clear
task run: ["test:units", "test:functionals", "test:generators", "test:integration", "test:tasks"]
["tasks"].each do |name|
Rails::TestTask.new(name => "test:prepare") do |t|
t.pattern = "test/#{name}/**/*_test.rb"
end
end
end
To ma dodatkowy bonus definiowania rake test:tasks
w podanym przykładzie .
Od Rails 4.2, test:run
obejmuje wszystkie podkatalogów z test
tym ich podczas pracy rake test
, a tym samym rake
.
W Railsach 5 te różne zadania już nie istnieją. – Qqwy
- 1. Szyny: Jak przetestować state_machine?
- 2. Jak przetestować kod asynchroniczny
- 3. Jak rekurencyjnie przetestować wszystkie skrzynie w katalogu?
- 4. Jak szybko przetestować kod javascript?
- 5. Jak najlepiej przetestować kod Java?
- 6. Wiosenne słoiki w katalogu tomcat lib
- 7. Jak przetestować kod AngularJS przy użyciu Mocha?
- 8. Jak przetestować kod zapisujący na standardowe wyjście?
- 9. Instalacja szyny: "Nie znaleziono pliku: lib"
- 10. Gdzie jest kod źródłowy gnu lib (libm)
- 11. Jak przetestować kod wywołujący funkcje najwyższego poziomu w Kotlin?
- 12. Jak przetestować ręczny kod transakcji DB w Django?
- 13. Szyny - Jak przetestować, czy ActionMailer wysłał określony załącznik?
- 14. SASS: import bourbon lib z innego katalogu w arkuszach stylów
- 15. Jak przetestować aplikację django umieszczoną w podfolderze?
- 16. Rails3 nie przeładunku kod w lib w trybie rozwoju
- 17. Jak uruchomić pomruk serwera w katalogu dist zamiast katalogu aplikacji?
- 18. onConnectionPo zawieszeniu. Jak przetestować? Kiedy ten kod zostanie uruchomiony?
- 19. Jak można przetestować kod asynchroniczny przy użyciu MSTest
- 20. Jak przetestować wszystkie testy w moim projekcie?
- 21. Jak mogę przetestować nieprzyjemne błędy w mokka?
- 22. Jak napisać klasę testową, aby przetestować mój kod?
- 23. Jak korzystać MOQ przetestować kod, który wywołuje chronionych pomocników
- 24. Jak przetestować kod zaplecza nodejs za pomocą Karmy (testowy)?
- 25. Jak utworzyć łącze do biblioteki współdzielonej bez prefiksu lib * w innym katalogu?
- 26. cant lib obciążenie moduły Directory - niezainicjowany stałe - 2 szyny do szyny 3 uaktualnienie
- 27. Jak zarządzać bibliotekami Tomcat 6 w podfolderach w katalogu% TOMCAT_HOME%/lib?
- 28. Katalog rails lib
- 29. Szyny: dlaczego jest plik .keep w każdym katalogu
- 30. Tomcat 6 vs 7 - lib vs shared/lib - tylko słoiki?
To już nie działa z Railsami 5 – Qqwy