आप RSpec में एकल परीक्षण / युक्ति फ़ाइल कैसे चलाते हैं?


282

मैं उदाहरण के लिए, जिस एक फ़ाइल का संपादन कर रहा हूँ, उसके लिए मैं एक ही युक्ति फ़ाइल के परीक्षण चलाने में सक्षम होना चाहता हूँ। rake specसभी चश्मा निष्पादित करता है। मेरा प्रोजेक्ट रेल परियोजना नहीं है, इसलिए rake spec:docकाम नहीं करता है।

पता नहीं अगर यह मायने रखता है, लेकिन यहाँ मेरी निर्देशिका संरचना है।

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb

जवाबों:


392

या आप रेक छोड़ सकते हैं और 'rspec' कमांड का उपयोग कर सकते हैं:

rspec path/to/spec/file.rb

आपके मामले में मुझे लगता है कि जब तक आपका ./spec/db_spec.rb फ़ाइल में उपयुक्त सहायक शामिल हैं, यह ठीक काम करेगा।

यदि आप rspec के पुराने संस्करण का उपयोग कर रहे हैं तो यह है:

spec path/to/spec/file.rb

31
नए rspec के साथ आपको "rspec path / to / file.rb" का उपयोग करना होगा
djburdick

3
शायद मैं इसे गलत कर रहा हूं, लेकिन मुझे "बंडल एंप्ली आरपीएसपी पथ / टू / स्पेक / फाइल.आरबी" करना होगा
andrhamm

2
यदि आप रेल का उपयोग कर रहे हैं, तो आप संभवतः रेक का उपयोग करके अपने स्पेक्स को निष्पादित करना चाहते हैं ताकि यह सुनिश्चित हो सके कि आप रिक्त डेटाबेस से शुरू कर रहे हैं।
सुपरल्यूमिनरी

@andrhamm, आप केवल अपने बंडल के संदर्भ में अपना चश्मा चला रहे हैं। यह आवश्यक है यदि आप रत्नों का उपयोग नहीं कर रहे हैं (जो कि rvm के साथ डिफ़ॉल्ट रूप से आते हैं, और rbenv के लिए एक अलग एक्सटेंशन हैं)
Caleb

6
यदि आप केवल एक परीक्षण चलाना चाहते हैं तो आप परीक्षण के प्रारंभ की लाइन संख्या को फ़ाइल में जोड़ देते हैं। उदाहरण: rspec path / to / spec / file.rb: 455
रनमोक

201

कच्चा आह्वान:

रेक स्पेक स्पेक = युक्ति / नियंत्रक / सेशन_कंट्रोलर_स्पेक। आरबी \ _
          SPEC_OPTS = "- e \" को कुकी के साथ लॉग इन करना चाहिए "

अब यह पता लगाएं कि इसे अपने संपादक में कैसे एम्बेड करें।


1
जैसा कि मैंने कहा, मैं रेल में नहीं हूं इसलिए कोई नियंत्रक नहीं है। लेकिन हां, "रेक स्पेक Spec = file.rb" काम करता है। धन्यवाद! मैं अब एमएसीएस एकीकरण पर काम कर रहा हूं।
जोनाथन ट्रैन

5
अगर आप इससे बच सकते हैं तो रेकफाइल को लॉन्च न करें। इसमें फ्रिकिन की उम्र लगती है
ओरियन एडवर्ड्स

2
मैंने स्वीकार किए गए उत्तर को बदल दिया, लेकिन Spec_OPTS परम मेरे लिए भी मददगार था।
जोनाथन ट्रान

2
अब यही मैं एक अच्छा जवाब कहता हूं। इसे "उत्तर" के रूप में चिह्नित क्यों नहीं किया गया है?
gmile

1
कल्पना सीधे चल रहा है अक्सर सबसे अच्छा विकल्प है, लेकिन आप एक कस्टम Rakefile में विभिन्न जादू बिट्स के लिए रेक को चलाने के लिए है जब कई बार देखते हैं
Nerdmaster

124

यह प्रश्न एक पुराना है, लेकिन यह Google के शीर्ष पर दिखाता है कि किसी एकल परीक्षण को कैसे चलाया जाए। मुझे नहीं पता कि यह एक हालिया जोड़ है, लेकिन एक युक्ति से एक परीक्षण चलाने के लिए आप निम्नलिखित कार्य कर सकते हैं:

rspec path/to/spec:<line number>

जहाँ -लाइन नंबर- एक पंक्ति संख्या है जिसमें आपके परीक्षण का हिस्सा होता है। उदाहरण के लिए, यदि आपके पास एक युक्ति है:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

मान लें कि यह युक्ति / मॉडल / foo_spec.rb में सहेजा गया है। तब आप दौड़ेंगे:

rspec spec/models/foo_spec.rb:2

और यह सिर्फ एक युक्ति है। वास्तव में, वह संख्या 2 से 5 तक कुछ भी हो सकती है।

उम्मीद है की यह मदद करेगा!


यह दिलचस्प है, हालांकि ऐसा लगता है कि यह तब काम नहीं करता जब आप अपनी कल्पना को कई फाइलों में बदल देते हैं (यानी आप इसे केवल मुख्य _spec.rb फ़ाइल के साथ उपयोग कर सकते हैं, लेकिन यदि आपका कोई भी उदाहरण इसमें नहीं है, तो यह कुछ भी नहीं चलेगा । यदि आप इसे एक ऐसी फ़ाइल के लिए उपयोग करने का प्रयास करते हैं जो एक शीर्ष-स्तरीय कल्पना फ़ाइल नहीं है, तो यह भी कुछ भी नहीं चलेगी।)
तर्जुक

मैं काफी फॉलो नहीं करता। "शीर्ष-स्तरीय कल्पना फ़ाइल" से आपका क्या अभिप्राय है? मेरा परीक्षण सूट बहुत अधिक हमेशा कई फ़ाइलों में विभाजित है, और मैं हमेशा इस पद्धति का उपयोग करके एकल फ़ाइल में परीक्षण कर सकता हूं। क्या आपके पास ऐसी फाइल होने का मतलब है जो requireआपकी अन्य स्पेक फाइल है?
जुआनपाको

मैं इसका उपयोग किसी भी फाइल पर किसी भी स्तर पर कल्पना / निर्देशिका के तहत कर सकता हूं। मेरा मानना ​​है कि तर्जुक गलत है।
माइकल ड्यूरेंट

7
यह कमाल है और शीर्ष पर होना चाहिए!
टॉमासो बारबुगली

4
मैं हर समय इसका उपयोग करता हूं, लेकिन कभी-कभी आप एक फ़ाइल से कई परीक्षण चलाना चाहते हैं। तब आप इस तरह के सभी उदाहरण टाइप कर सकते हैं:rspec spec/models/foo_spec.rb:2:12:49
swilgosz

61

आप के साथ * e * xample परीक्षण मामले के वास्तविक पाठ का भी उपयोग कर सकते हैं -e!

के लिए:

it "shows the plane arrival time"

आप उपयोग कर सकते हैं

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

यहां रेक की जरूरत नहीं है।


यह आप सभी की जरूरत है, सिवाय इसके कि "युक्ति" को "rspec" द्वारा प्रतिस्थापित किया जाना चाहिए जैसा कि कहा गया है @bandhunt
निकोलस

19

मदद से (युक्ति-एच):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

उदाहरण: कल्पना युक्ति / धावक_स्पे .rb -l 162


3
नए Rspec संस्करणों में आप :दस्तावेज़ के अनुसार एक कोलन के बाद लाइन नंबर और एक लोकप्रिय उत्तर जोड़ते हैं ।
ड्रैगन

13

यदि आपने मणि के बजाय एक प्लगइन के रूप में rspec स्थापित किया है, तो आपके पास specनिष्पादन योग्य नहीं होगा ।

किसी भी दर पर, आपको केवल रूबी का उपयोग करके फ़ाइल चलाने की आवश्यकता है। Rspec कोड आपके लिए परीक्षण चलाने के लिए पर्याप्त चतुर है।

उदाहरण के लिए:

ruby myclass_spec.rb

2
क्या इस तरह फ़ाइल के भीतर एक परीक्षण चलाना संभव है?
इयान वॉन

12

http://github.com/grosser/single_test आपको सामान पसंद करने देता है।

rake spec:user          #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c       #run test/functional/users_controller_test.rb
rake spec:user:token    #run the first spec in user_spec.rb that matches /token/
rake test:user:token    #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last

ऐसा प्रतीत होता है कि मणि का रख-रखाव नहीं किया गया था, अंतिम वचन 5 साल पहले था!
thegreendroid

10

रूबी 1.9.2 और रेल 3 में एक युक्ति फ़ाइल चलाने का एक आसान तरीका है:

  रूबी-मैं कल्पना युक्ति / मॉडल / user_spec.rb

स्पष्टीकरण:

  • rubyआदेश तेजी से हो जाता है rakeआदेश
  • -I spec "फ़ाइलों की तलाश करते समय" 'युक्ति' निर्देशिका शामिल करें
  • spec/models/user_spec.rb वह फ़ाइल है जिसे हम चलाना चाहते हैं।

क्या आप कुछ अतिरिक्त विकल्पों के साथ उस फ़ाइल में एक परीक्षण चला सकते हैं?
इयान वॉन

10

अपनी सभी rspec फ़ाइलों को चलाने के लिए :rspec

नोट: आपको अपने प्रोजेक्ट के मूल में होना चाहिए

एक rspec फ़ाइल चलाने के लिए :rspec 'path_to/spec.rb'

नोट: 'path_to / spec.rb' को अपने पथ से बदलें। उद्धरण चिह्न वैकल्पिक।

चलाने के लिए एक rspec परीक्षण एक फ़ाइल से:rspec 'path_to/spec.rb:7'

नोट:: 7 लाइन नंबर है जहां परीक्षण शुरू होता है


5

मुझे काम करने के लिए इनमें से किसी भी उदाहरण को प्राप्त करने में परेशानी हो रही थी, हो सकता है कि पोस्ट पुरानी हो और कमांड बदल गए हों?

आसपास कुछ मज़ाक करने के बाद मुझे यह काम मिला:

rspec कल्पना / मॉडल / user_spec.rb

यह सिर्फ एक फ़ाइल चलाएगा और टर्मिनल में उपयोगी आउटपुट प्रदान करेगा।


इसका उल्लेख स्वीकृत उत्तर में एक टिप्पणी में किया गया था। हां, मुझे लगता है कि यह पोस्ट सिर्फ इतनी पुरानी है कि कमांड का नाम बदल गया है।
जोनाथन ट्रान

4

specky.vim


3

वैकल्पिक रूप से, ऑटोटेस्ट पर एक नज़र डालें।

एक कमांड विंडो में ऑटोटेस्ट चलाने का मतलब होगा कि जब भी आप इसे सेव करेंगे, तब फाइल को निष्पादित किया जाएगा। इसके अलावा, यह तब भी चलाया जाएगा जब आप जिस फ़ाइल का अनुमान लगा रहे हैं वह चलाया जाता है।

उदाहरण के लिए, यदि आपके पास person_spec.rb नामक एक मॉडल युक्ति फ़ाइल है, और एक मॉडल फ़ाइल जिसे वह person.rb कहा जाता है, तो जब भी आप अपने संपादक से इनमें से किसी भी फ़ाइल को सहेजते हैं, तो कल्पना फ़ाइल निष्पादित की जाएगी।


3

यद्यपि इस प्रश्न के लिए कई शानदार उत्तर लिखे गए थे, लेकिन उनमें से कोई भी आरस्पेकtags दृष्टिकोण का उपयोग नहीं करता है ।

मैं विभिन्न फ़ाइलों में एक या अधिक चश्मा चलाने के लिए टैग का उपयोग करता हूं - केवल वे जो मेरे वर्तमान विकास कार्य से संबंधित हैं।

उदाहरण के लिए, मैं "चालू" मान के साथ "देव" टैग जोड़ता हूं:

it "creates an user", dev: :current do
  user = create(:user)
  expect(user.persisted?).to be_truthy
end

फिर मैं दौड़ता हूं

bundle exec rspec . --tag dev:current

अलग-अलग टैग / मूल्य अलग-अलग चश्मे या समूहों में सेट किए जा सकते हैं।


2

कहते हैं, आप todo बनाने के लिए परीक्षण चला रहे हैं। आप हमेशा उस विशिष्ट फ़ाइल से crete_spec.rb फ़ाइल का उपयोग करके विशिष्ट टूडू युक्ति कोड चला सकते हैं।

      rspec/spec/features/controller/spec_file_name.rb

   Example:

   Creating  rspec spec/features/todos/create_spec.rb
   Editing   rspec spec/features/todos/edit_spec.rb
   Deleting  rspec spec/features/todos/destroy_spec.rb

अगर आप एक ही शॉर्ट में सभी स्पेक्स को चलाना चाहते हैं।

   rspec 

यदि आप एक विशिष्ट नियंत्रक उपयोगकर्ता में सभी चश्मा चलाना चाहते हैं।

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

आशा है कि यह आपको अधिक समझ देता है!

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