2011-09-01 16 views
12

मैं थोड़ा टूटा हुआ हूँ। रेल 3 में स्कॉप्स के लिए यूनिट परीक्षण करें क्या समझ में आता है?रेल 3 स्कॉप्स का परीक्षण करना समझ में आता है?

एक तरफ, मैं कोड लिख रहा हूं और मुझे उस कोड का परीक्षण करना चाहिए।

हालांकि, दूसरी तरफ, मूल रूप से मेरे सभी स्कॉप्स प्रभावी रूप से तुच्छ हैं। पास पैरामीटर के खिलाफ एक चर की जांच करना अब तक का सबसे जटिल दायरा है।

scope :author, proc { |author| where(:author_user_id => author }

कि कोड तुच्छ और भी कम या ज्यादा कार्यों है कि वास्तव में स्कोप उपयोग में शामिल है।

स्कॉप्स का परीक्षण या परीक्षण करने के लिए सर्वोत्तम प्रथाएं क्या हैं?

+0

आप इस दायरे को परिभाषित क्यों कर रहे हैं? एसोसिएशन जैसे कुछ मानक का उपयोग करके लेखक पक्ष से जो कुछ भी है, उसे संग्रहित करने के लिए और अधिक उपयुक्त नहीं होगा? –

+0

उपयोगकर्ता मॉडल निश्चित रूप से उनके द्वारा लिखे गए सभी संबंधित ऑब्जेक्ट्स की सूची प्राप्त कर सकता है। 'has_many: authored_articles ... 'यह केवल सरल स्कॉप्स का पहला था जिस पर मेरा कर्सर उतरा। इसका उपयोग तब किया जाता है जब मेरे पास कई अन्य शामिल स्कॉप्स – Drew

उत्तर

2

अगर आपको लगता है गुंजाइश भी आसान परीक्षण किया जाना है, तो आप निश्चित रूप से इसे अनदेखा कर सकते, लेकिन अगर आप और नहीं स्कोप मैं आपको बता था this answer को देखने के लिए परीक्षण और परीक्षण व्यवहार पर ध्यान केंद्रित बारे में सोच रहे ही कोड।

+1

हैं, मैं कहूंगा कि आपको दायरे के कार्यान्वयन का परीक्षण नहीं करना चाहिए, बल्कि व्यवहार। [यहां जवाब है] (http://stackoverflow.com/questions/3025103/how-to-test-a-scope-in-rails-3/3146311#3146311) मैं लिंक करूंगा। – Uzbekjon

15

डेविड Chelimsky (Rspec के निर्माता) Rspec Google Group में निम्न उदाहरण की पेशकश की:

describe User, ".admins" do 
    it "includes users with admin flag" do 
    admin = User.create! :admin => true 
    User.admin.should include(admin) 
    end 

    it "excludes users without admin flag" do 
    non_admin = User.create! :admin => false 
    User.admin.should_not include(non_admin) 
    end 
end 

class User < ActiveRecord::Base 
    named_scope :admins, :conditions => {:admin => true} 
end 

यह स्पष्ट रूप से तुम्हारा के रूप में ही उदाहरण नहीं है, लेकिन यह आप इसे कैसे करना की एक विचार देना चाहिए। संदर्भ के लिए प्रासंगिक धागा यहां है: http://groups.google.com/group/rspec/browse_thread/thread/6706c3f2cceef97f

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