Yeni bir Rails uygulaması oluştururken Rails'e test birimi yerine RSpec kullanmasını nasıl söyleyebilirim?


152

Ben var test-unityüklenmiş ve rspec(birlikte yüklü -core, -expectations, -mocksve -railssürüm 2.6.x). Komutu çalıştırdığımda rails new foo, bunun test-unityerine test saplama dosyalarını oluşturmak için kullanır rspec.

Raylar yerine testleri oluşturmak için rspec kullanmak söyleyebilirim bir seçenek var mı?

Yanıtlar:


262

Aşağıdakiler işe yaramalıdır:

komut satırında:

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

Gemfile'da:

gem 'rspec-rails'

komut satırında:

bundle install
rails g rspec:install

Bence bu adımlardan bazıları düzensiz, değil mi? Bu, doğru sırayla yapılırsa bu işe yarayacak gibi görünüyor. Lütfen cevabınızı düzenleyin, ben de kabul edilmiş olarak işaretleyeceğim.
aarona

60
generator.rbBaşlatıcıya ihtiyacınız yoktur , bu RSpec'in korkuluğu tarafından halledilir. Tek ihtiyacınız olan rspec-railsiçinde developmentgrup Gemfilejeneratörler için bunu gerektirir yeterli olacaktır. Ayrıca, uygulamayı oluşturmanıza gerek yoktur -T, testdir silebilir ve çalışacaktır.
Ryan Bigg

1
Kodu g.test_framework =: rspec'den g.test_framework'a düzenleyebilir misiniz: rspec
Deepak Lamichhane

8
@RyanBigg: -T seçeneği ile "rails/test_unit/railtie"yorum yapacağızapplication.rb
Giang Nguyen

13
rspec-railsMücevheri eklediğinizde , onu test ve geliştirmeye koymak önemlidir veya yukarıdaki adımları takip etseniz bile jeneratörler RSpec'i kullanmayacaktır.
februaryInk

73

Yeni raylar uygulamanızı şu şekilde oluşturun:

rails new <app_name> -T

Veya testdizininizi mevcut uygulamanızdan kaldırın :

rm -rf test/

Gemfile hesabınıza bir giriş yapın:

gem 'rspec-rails'

Komut satırından gem'i yükleyin

$ bundle install

Komut satırından rspec'i uygulamanıza yükleyin:

$ rails g rspec:install

Şimdi raylar uygulamanız test birimi yerine RSpec kullanıyor.


2
bu listede 'paket yükleme' adımı eksikti. Katma.
cczona

6

Rails uygulamanızı oluşturduktan sonra:

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

RSpec taşını Gemfile'ınıza aşağıdaki şekilde ekleyin:

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

Komut satırına şunu yazın:

bundle install  # this will install the missing gems

Şimdi RSpec'i çalıştırarak kurmanız gerekiyor:

rails generate rspec:install

Bu, aşağıdaki dosyaları oluşturur:

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

Her seçeneğin ne yaptığını iyi anlamak için tüm spec_helper ve rails_helper yorumları okumanızı şiddetle tavsiye ederim.

Her şey ayarlandıktan sonra tüm testlerinizi aşağıdakilerle yapabilirsiniz:

bundle exec rspec

Https://kolosek.com/rails-rspec-setup adresinde önerilen spec_helper ve rails_helper yapılandırmaları hakkında daha fazla bilgi edinebilirsiniz .


4

Yeni bir geliştiriciyim ve OP'nin sorununu ele almak için bir ray bayrağı (-rspec) yaptım. Test :: Unit'ten kurtulur ve rails-rspec gem'i bir bash betiği ile ekler. Komut dosyası, otomatik olarak yeniden süsleyici mücevher ekleyerek veya özel bayraklar ve değerli taşlar oluşturarak linux geliştiricilerine yardımcı olmak için değiştirilebilir. (belki de özellikle o mücevher hattına gidip yorumu silme)

İşte öz & & umarım bu orada birine yardımcı olur. https://gist.github.com/MTen/8310116


0

Bunu railsCLI ile yapmanın yerel bir yolu yok . Şunlar olmadan yeni bir proje oluşturun test-unit:

rails new rails-app --skip-test

Ardından rspecyeni Rails uygulamasına entegre etmek için talimatları izleyin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.