2011-11-17 1 views
9

मैं यह पता लगाने की कोशिश कर रहा हूं कि "यह हैश में यह कुंजी क्यों है" spec मैं लिख रहा हूं। मेरी रूबी आरईपीएल में जा रहा निम्नलिखित कोशिश कर रहा हूँ ...आरएसपीसी 2.7 और हैश होना चाहिए_key

[3] pry(main)> a_hash = {:a=>"A"} 
=> {:a=>"A"} 
[4] pry(main)> a_hash.should have_key :a 
NoMethodError: undefined method `have_key' for main:Object 
from (pry):4:in `<main>' 
[5] pry(main)> a_hash.keys.length.should == 1 
=> true 
[8] pry(main)> a_hash.has_key? :a 
=> true 

पहले टेस्ट जाहिर है कि मैं क्या काम कर पाने के लिए और दूसरे टेस्ट मैं बस की पुष्टि है कि RSpec मेरी आरईपीएल वातावरण में लोड किया जाता है चल रहा हूँ चाहता हूँ ।

उत्तर

4

आपको वास्तव में आरएसपीईसी उदाहरण के अंदर ऐसा करने की ज़रूरत है, मुझे नहीं लगता कि आप कहीं भी उस तरह के कोड को लिख सकते हैं।

describe "" do 
    it "has a key" do 
    ... 
    end 
end 
+0

मैं सहमत हूं लेकिन एक अच्छा मणि है जिसे मैंने अभी तक कोशिश नहीं की है लेकिन आशाजनक लग रहा है। https://github.com/amatsuda/interactive_rspec – lucapette

+0

मैंने मूल रूप से 'des/it' ब्लॉक में लिपटे' blah_spec.rb' फ़ाइल में अपना spec लिखा था और रूबी ने # <कक्षा: 0x007fc0a5dd3160> के लिए अनिर्धारित विधि 'have_key 'शिकायत की है। (NoMethodError) ' – cfeduke

+0

डी ओह! मैं वास्तव में 'यह' ब्लॉक खो रहा था, मैं इसे सीधे 'वर्णन' में कर रहा था ... और अब यह काम करता है! – cfeduke

22

आप वास्तव में "इसे" ब्लॉक के बाहर आरएसपीसी मैचर्स कर सकते हैं। आपको बस आरएसपीसी :: मैचर्स को शामिल करने की आवश्यकता है।

[ ~/work/mobile_server (master)]$ irb 
>> require 'rspec' 
true 
>> include RSpec::Matchers 
Object < BasicObject 
>> {a: 1}.should have_key(:a) 
true 
+0

मुझे लगता है कि यह निश्चित रूप से बेहतर/अधिक जानकारीपूर्ण उत्तर है। @ कोस्टी की जानकारी के लिए धन्यवाद। –

+0

आरएसपीईसी 3 में आपको "उम्मीद ({a: 1}) टाइप करना चाहिए। Have_key (: a)" – Evmorov