Jak mogę powiedzieć Railsom, aby używały RSpec zamiast test-unit podczas tworzenia nowej aplikacji Railsowej?

152

Mam test-unitzainstalowany i rspeczainstalowane (wraz z -core, -expectations, -mocksi -railswersja 2.6.x). Kiedy uruchamiam polecenie rails new foo, używa ono test-unitdo generowania testowych plików pośredniczących zamiast rspec.

Czy jest opcja, w której mogę nakazać railsom użycie rspec do generowania testów?

aarona
źródło

Odpowiedzi:

262

Powinno działać:

w linii poleceń:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

w Gemfile:

gem 'rspec-rails'

w linii poleceń:

bundle install
rails g rspec:install
Zabba
źródło
Myślę, że niektóre z tych kroków są niesprawne, prawda? Wygląda na to, że to zadziała, jeśli zostanie wykonane we właściwej kolejności. Zmień swoją odpowiedź, a ja oznaczę ją jako zaakceptowaną.
aarona
60
Nie potrzebujesz generator.rbinicjalizatora, zajmuje się tym łącznik RSpec. Wszystko, czego potrzebujesz, znajduje się rspec-railsw developmentgrupie, Gemfilektóra wystarczy, aby wymagać tego dla generatorów. Nie musisz też generować aplikacji -T, możesz usunąć testkatalog i będzie działać.
Ryan Bigg
1
Czy możesz edytować kod z g.test_framework =: rspec do g.test_framework: rspec
Deepak Lamichhane
8
@RyanBigg: z opcją -T "rails/test_unit/railtie"zakomentujemyapplication.rb
Giang Nguyen
13
Kiedy dodajesz rspec-railsklejnot, ważne jest, aby go przetestować i rozwinąć, w przeciwnym razie generatory nie będą używać RSpec, nawet jeśli wykonasz powyższe kroki.
lutyInk
73

Utwórz nową aplikację railsową jako:

rails new <app_name> -T

Lub usuń testkatalog z istniejącej aplikacji:

rm -rf test/

Zrób wpis w swoim Gemfile:

gem 'rspec-rails'

Z wiersza poleceń zainstaluj plik gem

$ bundle install

Z wiersza poleceń zainstaluj rspec w swojej aplikacji:

$ rails g rspec:install

Teraz twoja aplikacja railsowa używa RSpec zamiast test-unit.

Sayuj
źródło
2
Na tej liście brakowało kroku „instalacja pakietu”. Dodany.
cczona
6

Po utworzeniu aplikacji railsowej z:

rails new <app_name> -T  # to exclude Test::Unit

Dodaj klejnot RSpec do pliku Gemfile w następujący sposób:

group :development, :test do
  gem "rspec-rails"
end

W linii poleceń napisz:

bundle install  # this will install the missing gems

Teraz musisz zainstalować RSpec, uruchamiając:

rails generate rspec:install

Spowoduje to wygenerowanie następujących plików:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

Zdecydowanie zalecam przeczytanie wszystkich komentarzy spec_helper i rails_helper, aby dobrze zrozumieć, co robi każda opcja.

Po ustawieniu wszystkiego możesz uruchomić wszystkie testy za pomocą:

bundle exec rspec

Możesz przeczytać więcej o zalecanych konfiguracjach spec_helper i rails_helper na https://kolosek.com/rails-rspec-setup .

Nesha Zoric
źródło
4

Jestem nowym programistą i właśnie stworzyłem flagę rails (-rspec), aby rozwiązać problem OP. Pozbywa się Test :: Unit i wstawia gem rails-rspec ze skryptem bash. Skrypt można zmodyfikować, aby pomóc programistom Linuksa, automatycznie dodając klejnotęrubyracer lub tworząc własne flagi i zestawy klejnotów. (może konkretnie przechodząc do tej linii klejnotów i usuwając komentarz)

Oto sedno i mam nadzieję, że to komuś pomoże. https://gist.github.com/MTen/8310116

MTen
źródło
0

Nie ma natywnego sposobu, aby to zrobić za pomocą railsCLI. Wygeneruj nowy projekt bez test-unit:

rails new rails-app --skip-test

Następnie postępuj zgodnie z rspecinstrukcjami, aby zintegrować go z nową aplikacją Rails.

to mój projekt
źródło