2011-02-24 22 views
6
Foo.expects(:bar) 
Foo.bar(:abc => 123, :xyz => 987) 

# assert Foo.bar was called with a hash that has a key of :abc == 123 

के साथ एक टोंटदार विधि के लिए एक तर्क के रूप में पारित मूल रूप से मैं, वस्तु एक टोंटदार विधि के लिए एक तर्क के रूप में पारित की जांच करने के आदेश है कि वस्तु के एक मूल्य पर निरीक्षण करने के लिए में चाहते हैं। मेरी स्थिति में मैं Foo.expects(:bar).with({:abc => 123}) का उपयोग नहीं कर सकता क्योंकि मुझे पता है कि वस्तु एक-दूसरे के बराबर नहीं है। मैं सिर्फ तर्क के उप-मूल्य की तुलना करना चाहता हूं।हो रही वस्तु मोचा

निश्चित रूप से यह संभव है, मुझे सिंटैक्स या रणनीति यहां नहीं मिल रही है।

उत्तर

10

मैंने इसे समझ लिया! with बाहर निकलता है एक ब्लॉक ले सकता है।

Foo.expects(:bar).with do |the_hash| 
    the_hash[:abc] == 123 
end 
+0

इसके लिए धन्यवाद! – Jason