साथ मैं एक वर्ग मिल गया है, कि कुछ अन्य वर्गों का आधार है कि व्यवहार माहिर:परीक्षण सरल एसटीआई FactoryGirl
class Task < ActiveRecord::Base
attr_accessible :type, :name, :command
validates_presence_of :type, :name, :command
# some methods I would like to test
end
वर्ग CounterTask टास्क
से विरासतclass CounterTask < Task
end
यह सब काम करता है ठीक है जब तक कि मैं बेस क्लास का परीक्षण करने की कोशिश नहीं कर रहा हूं, क्योंकि इसमें एक प्रकार होना चाहिए।
FactoryGirl.define do
factory :task do
sequence(:name) { |n| "name_#{n}" }
sequence(:command) { |n| "command_#{n}" }
end
end
सुपरक्लास की मूल कार्यक्षमता का परीक्षण कैसे करेंगे?
क्या आपका परीक्षण लिखा जाना चाहिए ताकि यह कार्यान्वयन की बजाय कार्यक्षमता का परीक्षण करे? इस मामले में इसका मतलब यह होगा कि आप जांच करेंगे कि क्या 'काउंटरटास्क' में गुण और अन्य चीजें हैं जो इसे 'कार्य' से प्राप्त होती हैं। यदि आप अपना कार्यान्वयन बदलते हैं, उदाहरण के लिए अब एसटीआई का उपयोग नहीं कर रहे हैं। यदि आपका 'काउंटरटास्क' वही व्यवहार करता है तो आपका परीक्षण अभी भी सफल हो सकता है। – Arjan
यह एक अच्छा मुद्दा है। मैंने सोचा कि अगर मैं पहली बार आधार कार्यक्षमता और उसके बाद बच्चे वर्गों का परीक्षण करता हूं तो मैं परीक्षण में कुछ डुप्लीकेट बचाऊंगा ... शायद यह मेरी समस्या का समाधान हो सकता है। – Mark