2017-02-15 15 views
12

मुझे लगता है कि जैसे एक घटक है। मैं foo विधि का परीक्षण करना चाहता हूं लेकिन मुझे नहीं पता कि इसका उपयोग कैसे किया जाए। मैंने कोशिश की:एंजाइम के साथ बाल घटक विधि का परीक्षण कैसे करें?</p> <pre><code><Parent> <Child/> </Parent> </code></pre> <p>और <code><Child/></code> घटक एक विधि <code>foo</code> है:

mount(<Parent><Child/></Parent>).props().children.foo 

या

mount(<Parent><Child/></Parent>).children().foo 

लेकिन दोनों उन्हें undefined हैं। मैं .instance() का उपयोग नहीं कर सकता क्योंकि यह रूट नहीं है। मैं केवल <Child/> माउंट नहीं कर सकता क्योंकि <Parent>context पर कुछ (प्रतिक्रिया-राउटर का context.router) जोड़ें और मुझे <Child/> में इनिट की आवश्यकता है। इसके साथ कोई विचार?

+1

ऐसा लगता है कि यह अभी भी संभव नहीं है या कम से कम जटिल है: https://github.com/airbnb/enzyme/issues/361 – Leonardo

+0

अपने रास्ते पर काम करने से पहले पेड़ में कम प्रतिक्रिया घटकों का परीक्षण करें। प्रतिक्रिया राउटर पर घटक की निर्भरता को दूर करने के लिए परीक्षणों के लिए अपने घटक का एक अनचाहे संस्करण भी निर्यात करें। – therewillbecode

उत्तर

0

मुझे लगता है कि आपकी समस्या बाल घटकों का परीक्षण करने के तरीके से अलग है।

मेरा पहला सवाल यह है: आप जांच क्यों कर रहे हैं कि क्या बच्चे के घटक के माता-पिता के घटक परीक्षणों में एक विशिष्ट विधि है?

आईएमएचओ आपको इस घटक के लिए एक परीक्षण विशिष्ट होना चाहिए और फिर, इस परीक्षण में आप जांचें कि विधि मौजूद है या नहीं।

बस उत्तर के बिना छोड़ने के लिए, आपने .find(Child).instance().foo पर प्रयास किया?

1

मैं केवल आपके माता-पिता वर्ग के लिए परीक्षण लिखने पर विचार करता हूं, और उसके बाद केवल आपके बच्चे का परीक्षण करने के लिए एक अलग परीक्षण फ़ाइल पर विचार करता हूं।

एक बार जब आप आप घटक घुड़सवार है का उपयोग करते हुए:

const component = mount(<Child>); 

इसे प्रयोग के तरीकों है करने के लिए आप तो उपयोग कर सकते है:

component.instance().methodname 

फिर आप jest.fn के साथ ओवरराइड की तरह सामान कर सकते हैं() और उचित परीक्षण करें।

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