नई रेल एप्लिकेशन बनाते समय मैं परीक्षण-इकाई के बजाय RSpec का उपयोग करने के लिए रेल कैसे कह सकता हूं?


152

मैं है test-unitस्थापित किया है और rspecस्थापित (के साथ-साथ -core, -expectations, -mocksऔर -railsसंस्करण 2.6.x)। जब मैं कमांड चलाता हूं rails new foo, तो यह test-unitपरीक्षण स्टब फ़ाइलों को उत्पन्न करने के लिए उपयोग करता है rspec

क्या कोई विकल्प है जहां मैं रेल्स का उपयोग करने के लिए रेल्स का उपयोग करने के बजाय परीक्षण करने के लिए कह सकता हूं?

जवाबों:


262

निम्नलिखित काम करना चाहिए:

कमांड लाइन पर:

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

जेमफाइल में:

gem 'rspec-rails'

कमांड लाइन पर:

bundle install
rails g rspec:install

मुझे लगता है कि उनमें से कुछ कदम क्रम से बाहर हैं, नहीं? ऐसा लगता है कि अगर सही क्रम में किया जाता है तो यह काम करेगा। कृपया अपना उत्तर संपादित करें और मैं इसे स्वीकार करूंगा।
अनारोना

60
आपको generator.rbइनिशियलाइज़र की आवश्यकता नहीं है, यह RSpec के रेलटी द्वारा ध्यान रखा जाता है। आप सभी की जरूरत rspec-railsके developmentसमूह के भीतर है Gemfileजो जनरेटर के लिए इसकी आवश्यकता के लिए पर्याप्त है। आपको ऐप को जनरेट करने की भी आवश्यकता नहीं है -T, आप testडायर को हटा सकते हैं और यह काम करेगा।
रयान बिग

1
क्या आप g.test_framework =: rspec से g.test_framework: rspec
Deepak Lamichhane

8
@RyanBigg: -टी विकल्प के साथ हम कर चुके होंगे "rails/test_unit/railtie"बाहर में टिप्पणी कीapplication.rb
ग्यांग गुयेन

13
जब आप rspec-railsमणि जोड़ते हैं , तो इसे परीक्षण और विकास के तहत रखना महत्वपूर्ण है , या यदि आप उपरोक्त चरणों का पालन करते हैं, तो जनरेटर RSpec का उपयोग नहीं करेंगे।
फरवरी

73

अपना नया रेल एप्लिकेशन बनाएं:

rails new <app_name> -T

या अपनी testनिर्देशिका को अपने मौजूदा एप्लिकेशन से हटा दें :

rm -rf test/

अपने Gemfile में एक प्रविष्टि करें:

gem 'rspec-rails'

कमांड लाइन से मणि स्थापित करें

$ bundle install

कमांड लाइन से अपने आवेदन में rspec स्थापित करें:

$ rails g rspec:install

अब आपका रेल एप्लिकेशन टेस्ट-यूनिट के बजाय RSpec का उपयोग करता है।


2
उस सूची से 'बंडल इनस्टॉल' स्टेप गायब था। जोड़ा गया।
cc Arizona

6

एक बार जब आप अपना रेल एप्लिकेशन बना लेते हैं:

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

निम्नलिखित तरीके से अपने रत्न में RSpec रत्न जोड़ें:

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

कमांड लाइन में लिखें:

bundle install  # this will install the missing gems

अब आपको रन करके RSpec स्थापित करना होगा:

rails generate rspec:install

यह निम्न फ़ाइलें उत्पन्न करेगा:

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

मैंने दृढ़ता से सभी spec_helper और rails_helper टिप्पणियों के माध्यम से पढ़ने की सिफारिश की है ताकि प्रत्येक विकल्प की अच्छी समझ प्राप्त हो सके।

एक बार सब कुछ सेट हो जाने के बाद आप अपने सभी परीक्षण चला सकते हैं:

bundle exec rspec

आप https://kolosek.com/rails-rspec-setup पर अनुशंसित spec_helper और rails_helper कॉन्फ़िगरेशन के बारे में अधिक पढ़ सकते हैं ।


4

मैं एक नया डेवलपर हूं और मैंने ओपी की समस्या का समाधान करने के लिए एक रेल फ्लैग (-rspec) बनाया है। यह टेस्ट से छुटकारा दिलाता है :: यूनिट और रेल-आरस्पेक रत्न को बैश स्क्रिप्ट के साथ सम्मिलित करता है। लिनेक्स डेवलपर्स को स्वचालित रूप से चिकित्सीय मणि जोड़कर या कस्टम झंडे और रत्नों को बनाने में मदद करने के लिए स्क्रिप्ट को संशोधित किया जा सकता है। (शायद विशेष रूप से उस मणि रेखा पर जा रहे हैं और टिप्पणी को हटा रहे हैं)

यहाँ gist && मुझे आशा है कि यह किसी को वहाँ से बाहर निकलने में मदद करता है। https://gist.github.com/MTen/8310116


0

railsसीएलआई के साथ ऐसा करने का कोई मूल तरीका नहीं है । बिना कोई नया प्रोजेक्ट बनाएं test-unit:

rails new rails-app --skip-test

और फिर rspecनए रेल एप्लिकेशन में इसे एकीकृत करने के लिए निर्देशों का पालन करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.