2011-10-27 16 views
23

ऐसी स्थिति में आरएसपीईसी लिखने का सबसे अच्छा तरीका क्या होगा जहां दो (या अधिक) परिणामों में से कोई भी स्वीकार्य हो?रुपयेपेक: होना चाहिए (यह या वह)

यहां एक उदाहरण है जो मैं करना चाहता हूं। यह स्पष्ट रूप से गलत है (मेरे विचार) है, लेकिन यह आप मैं क्या हासिल करना कोशिश कर रहा हूँ का सार देना चाहिए:

it "should be heads or tails" do 
    h="heads" 
    t="tails" 
    flip_coin.should be(h || t) 
end 

और हाँ, मुझे पता है मैं अपने खुद के rspec मिलान "should_be_one_or_the_other लिख सकता हूँ (OPTION1 , विकल्प 2) ", लेकिन यह थोड़ा सा लगता है - मैं एक बेहतर समाधान की उम्मीद कर रहा था।

it "should be heads or tails" do 
    ["heads", "tails"].should include flip_coin 
end 

उत्तर

24

ActiveSupport Object#in? तरीका प्रदान करता है

+0

यह मेरे लिए नवीनतम संस्करण में काम नहीं करता है, मुझे इसे पहले सरणी में बदलना था 'be_in (["head", "पूंछ"]) ' – Vox

+0

के लिए धन्यवाद प्रतिक्रिया –

+1

मामूली सुधार: सक्रिय समर्थन 'ऑब्जेक्ट' पर 'ऑब्जेक्ट' पर परिभाषित करता है, न कि 'ऐरे' पर, क्योंकि इसे 'flip_coin.in' कहा जाता है? % डब्ल्यू (सिर पूंछ) 'और flip_coin कोई 'ऑब्जेक्ट' हो सकता है। –

14

मैं शायद कुछ इस तरह लिखना चाहते हैं। आप RSpec के साथ गठजोड़ कर सकते हैं और बस निम्नलिखित का उपयोग करें:

flip_coin.should be_in(["heads", "tails"]) 

या के साथ नए Rspec 3 वाक्य रचना:

expect(flip_coin).to be_in(["heads", "tails"]) 
+5

एक सभ्य विकल्प के साथ लागू किया or, लेकिन ऐसा लगता है जैसे कि यह बाधित उचित "rspec" काम करने के लिए जिस तरह से, पर उम्मीद मूल्य के साथ सही। – GlyphGryph

+1

हाँ गलत तरीके से, लेकिन निश्चित रूप से सबसे साफ वाक्यविन्यास – idrinkpabst

11

का होना चाहिए सही पर उम्मीद के साथ इसे लिखने का एक और तरीका:

it 'should be heads or tails' do 
    flip_coin.should satisfy{|s| ['heads', 'tails'].include?(s)} 
end 
15

मैं जानता हूँ कि इस पुरानी है, लेकिन मैं RSpec 3.4 पर इस में भाग में, वहाँ है अब or keyword। तो यह मान्य है:

expect(flip_coin).to eq('heads').or(eq('tails')) 
1

अगर be मिलान

expect(flip_coin).to eq('heads').or(be == 'tails') 
+0

मुझे दिसंबर 15 से "या" का उपयोग करके उत्तर से कम अंतर्ज्ञानी लगता है। –

संबंधित मुद्दे