2011-09-19 9 views
5

मेरे पास दो मॉडल, फू और बार हैं। Foo में ask_bar_to_do_something नामक एक विधि है, जिसे Foo के उदाहरण के बाद बुलाया जाता है। यह विधि इस Foo इंस्टेंस की स्थिति को नहीं बदलेगी।किसी ऑब्जेक्ट पर किसी विधि को कॉल करने के तरीके का परीक्षण कैसे करें - रेल RSpec

मैं इस विधि को 1 लौटने के लिए तैयार करने के बारे में सोच रहा हूं, और एक लैम्ब्डा ब्लॉक बना रहा हूं जो Foo ऑब्जेक्ट बनाता है और वापसी मान की जांच करता है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

धन्यवाद।

उत्तर

13

ऑब्जेक्ट का मज़ाक क्यों न करें और विधि कॉल की अपेक्षा न करें?

class Foo < ActiveRecord::Base 
    after_create :ask_bar_to_do_something 

    def ask_bar_to_do_something 
    #blah blah blah 
    end 
end 

आप वस्तु

Foo.any_instance.should_receive(:ask_bar_to_do_something) 
Factory(:foo) 

वरना

foo = Foo.new(:attr1 => 'value1', :attr2 => 'value2') 
foo.should_receive(:ask_bar_to_do_something) 
foo.save 
+0

धन्यवाद एक बहुत बनाने के लिए, दायां कारखाना उपयोग कर रहे हैं। यही वही है जो मैं ढूंढ रहा हूं। – AdamNYC

+0

क्या यह 'चाहिए' वाक्यविन्यास है? यदि कोई उपलब्ध है तो क्या कोई भी 'उम्मीद' वाक्यविन्यास साझा कर सकता है? – ianstarz

+3

@ianstarz 'expect_any_instance_of (Foo) प्राप्त करने के लिए (: ask_bar_do_do_something)' – rxgx

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