5

क्या मुझे दो मॉडलों के बीच एक एसोसिएशन के लिए एक परीक्षा लिखनी चाहिए?क्या मुझे मॉडल के बीच संबंधों का परीक्षण करना चाहिए?

मुझे यह कोड मेरी पहली रेल परियोजनाओं में से एक में मिला है और यह सही नहीं लगता है क्योंकि एसोसिएशन विफलता के बजाय त्रुटि का कारण बनता है। तो मैं उन्हें कैसे और कहाँ सही तरीके से परीक्षण करूंगा?

require 'test_helper' 

class VocabTest < ActiveSupport::TestCase 

    test "Must have 'belongs_to user' association" do 
    assert @vocab.user 
    end 
end 

उत्तर

6

मैं मॉडलों के बीच संबंधों का परीक्षण करने की पुष्टि करता हूं ताकि यह पुष्टि हो सके कि मैंने सभी सेटअप सही तरीके से किए हैं। संघों का परीक्षण करने का एक आसान तरीका shoulda है।

आप अपने परीक्षण फ़ाइलों को अधिक अच्छी तरह से पढ़ने योग्य बनाने के लिए सक्षम हो जाएगा

require 'test_helper' 

class VocabTest < ActiveSupport::TestCase 

    test "associations" do 
    should belong_to :user 
    end 

end 
3

नहीं, आप विशेष रूप से इकाई परीक्षण संघों के लिए, की जरूरत नहीं है अपने लक्ष्य को पूरी तरह से अपने आवेदन का परीक्षण करने के लिए है, भले ही (जो तुम्हे करना चाहिए)। संघ केवल कार्यान्वयन हैं; वे व्यवहार का समर्थन करने के लिए मौजूद हैं, और परीक्षण का व्यवहार हमेशा संगठनों के अस्तित्व का पूरी तरह से परीक्षण करता है। एसोसिएशन के अलग यूनिट परीक्षण कोई मूल्य नहीं जोड़ते हैं।

यदि आप परीक्षण संचालित विकास का अभ्यास कर रहे हैं और कुछ व्यवहार को लागू करने के बीच में एक एसोसिएशन की आवश्यकता है, तो आपको एसोसिएशन के लिए यूनिट टेस्ट लिखना उपयोगी हो सकता है, इसे प्राप्त करने के लिए, और समाप्त करने के लिए वापस लौटना व्यवहार का परीक्षण। मुझे आम तौर पर यह नहीं लगता कि मुझे इसकी आवश्यकता है, क्योंकि रेल में मौजूदा मॉडलों के साथ एक एसोसिएशन जोड़ना, या यहां तक ​​कि एक नया मॉडल जोड़ना बहुत आसान है, लेकिन कुछ लोग इंटरमीडिएट टेस्ट के समर्थन की तरह हैं। हालांकि, व्यवहार लागू होने के बाद मैं एसोसिएशन के परीक्षण को हटा दूंगा, क्योंकि मैं कोई अनावश्यक परीक्षण करता हूं।

मैंने this answer और this answer में ActiveRecord मॉडल के विभिन्न पहलुओं का सीधे परीक्षण करने की उपयोगिता पर अधिक लिखा।

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