रिएक्ट एंजाइम दूसरे (या nth) नोड को खोजते हैं


128

मैं जैस्मीन एंजाइम उथले प्रतिपादन के साथ एक प्रतिक्रिया घटक का परीक्षण कर रहा हूं।

इस प्रश्न के प्रयोजनों के लिए यहाँ सरलीकृत ...

function MyOuterComponent() {
  return (
    <div>
      ...
      <MyInnerComponent title="Hello" />
      ...
      <MyInnerComponent title="Good-bye" />
      ...
    </div>
  )
}

MyOuterComponentके 2 उदाहरण हैं MyInnerComponentऔर मैं प्रत्येक पर प्रॉप का परीक्षण करना चाहता हूं।

पहले एक मुझे पता है कि कैसे परीक्षण करना है। मैं के findसाथ उपयोग first...

expect(component.find('MyInnerComponent').first()).toHaveProp('title', 'Hello');

हालाँकि, मैं दूसरे उदाहरण का परीक्षण करने के लिए संघर्ष कर रहा हूँ MyInnerComponent

मुझे उम्मीद थी कि कुछ इस तरह काम करेगा ...

expect(component.find('MyInnerComponent').second()).toHaveProp('title', 'Good-bye');

या यह भी ...

expect(component.find('MyInnerComponent')[1]).toHaveProp('title', 'Good-bye');

लेकिन निश्चित रूप से उपरोक्त कार्यों में से कोई भी नहीं।

मुझे लगता है कि मैं स्पष्ट याद कर रहा हूँ।

लेकिन जब मैं डॉक्स के माध्यम से देखता हूं तो मुझे एक अनुरूप उदाहरण नहीं दिखता है।

किसी को?

जवाबों:


225

आप जो चाहते हैं वह .at(index)विधि है: .at (इंडेक्स)

तो, आपके उदाहरण के लिए:

expect(component.find('MyInnerComponent').at(1)).toHaveProp('title', 'Good-bye');


1
मेरे लिए यह परियोजना के संस्करण से संबंधित, के at()साथ काम कर रहा है findAll()
जोनाटास CD 25'19

11

यदि आप प्रत्येक चीज़ पर कुछ चीजों का परीक्षण करना चाहते हैं, तो भी मिलान सेट के माध्यम से पुनरावृत्ति पर विचार करें:

component.find('MyInnerComponent').forEach( (node) => {
    expect(node.prop('title')).toEqual('Good-bye')
})

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.