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?

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

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.


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 .


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.