2017-05-26 15 views
9

मेरे पास एक प्रतिक्रिया घटक है जो shouldComponentUpdate विधि लागू करता है और मैं इसे यूनिट परीक्षण करना चाहता हूं। आदर्श रूप से मैं एक इकाई परीक्षण में घटक पर कुछ प्रोप या राज्य बदल सकता हूं और इसे फिर से प्रस्तुत या सत्यापित कर सकता हूं। मैं enzyme का उपयोग कर रहा हूं अगर यह मदद करता है।यूनिट परीक्षण कैसे करें घटक घटक चाहिए component अद्यतन विधि

+0

मुझे नहीं लगता कि आप किस बारे में बात कर रहे हैं एक इकाई परीक्षण है, है ना? आदर्श रूप से आप अलगाव में 'mustComponentUpdate' का परीक्षण करने में सक्षम होना चाहिए। – speckledcarp

उत्तर

14

मैं शायद सीधे कॉलकंपेंटेंट अपडेट सीधे कॉल करूँगा।

const comp = shallow(<Comp {...props} />) 
const shouldUpdate = comp.instance().shouldComponentUpdate(nextProps, nextState) 
expect(shouldUpdate).toBe(true/false) 

निर्धारण अगर घटक वास्तव में प्रदान की गई/प्रस्तुत करना नहीं था द्वारा परीक्षण करने के लिए कोशिश कर रहा तरह शायद और अधिक परेशानी की तुलना में यह लायक है है; मुझे यह भी यकीन नहीं है कि एंजाइम का उपयोग करके आप यह कैसे करेंगे। आप वास्तव में प्रस्तुत आउटपुट से बाहर नहीं जा सकते हैं, क्योंकि आप शायद क्वॉम्पोनेंट अपडेट से झूठी वापसी नहीं करेंगे जब तक कि प्रस्तुत आउटपुट पहले जैसा नहीं था। तो यह निर्धारित करना कि क्या प्रस्तुत किया गया है या अकेले आउटपुट से नहीं आ सकता था।

इसे कॉल करके परीक्षण सीधे मुझे ठीक लगता है। जब तक आप भरोसा करते हैं कि रिएक्ट आपके किक कॉम्पोनेंट अपडेट रिटर्न वैल्यू का सही इस्तेमाल करने जा रहा है (यदि इसमें नहीं है तो हमें बड़ी समस्याएं हैं), यह सुरक्षित है।

-3

मुझे लगता है कि आपको इकाई परीक्षणों के लिए कुछ भी प्रस्तुत नहीं करना चाहिए और इसीलिए आपको यूनिट परीक्षणों के लिए एंजाइम की आवश्यकता नहीं है।

आपके मामले के लिए एक त्वरित इकाई परीक्षण उदाहरण।

const classContext = { 
    props: {}, 
    state: {} 
}; 
const nextProps = {}; 
const nextState = {}; 

const shouldUpdate = yourComponent.prototype.shouldComponentUpdate.call(classContext, nextProps, nextState); 

expect(shouldUpdate).toBe(true/false) 
संबंधित मुद्दे