test shallow run react reactjs jasmine enzyme

reactjs - shallow - Reaccionar enzima encontrar segundo(o enésimo) nodo



jest enzyme shallow (3)

Estoy probando un componente React con renderizado superficial de Jasmine Enzyme.

Simplificado aquí para los propósitos de esta pregunta ...

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

MyOuterComponent tiene 2 instancias de MyInnerComponent y me gustaría probar los accesorios en cada una.

El primero que sé probar. Yo uso find con first ...

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

Sin embargo, estoy luchando para probar la segunda instancia de MyInnerComponent .

Esperaba que algo como esto funcionara ...

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

o incluso esto ...

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

Pero, por supuesto, ninguno de los trabajos anteriores.

Siento que me estoy perdiendo lo obvio.

Pero cuando miro a través de los docs , no veo un ejemplo análogo.

¿Nadie?


Lo que quieres es el método .at(index) : .at(index) .

Entonces, para su ejemplo:

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


Si va a probar ciertas cosas en cada uno, también considere iterar a través del conjunto coincidente:

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


const component = wrapper.find(''MyInnerComponent'').at(1); //at(1) index of element 0 to ~ expect(component.prop(''title'')).to.equal(''Good-bye'');