2017-03-25 4 views
1

Mit Enzym versuche ich den gerenderten Text einer Komponente zu testen. Die Komponente ist ein LinkButton, und es macht sich wie so:Wie kann ich den Text eines Kindelements im Enzym testen?

<a><button to="/projects">See list of all projects</button></a> 

Ich bin nicht sicher, wie direkt die Zeichenfolge verweisen „Liste aller Projekte“. Ich teste es derzeit wie folgt:

let { link } = setup({ type: 'Project' }) 
link = link.shallow() 

const text = link.prop('children').props.children.join('') 
expect(link.prop('to')).to.eq('/projects') 
expect(text).to.eq('See list of all projects') 

link kommt aus shallow(<NotFoundCard />).find(LinkButton).

Ich habe versucht, link.find('button') und link.find('a') zu verwenden, aber beide 0 Knoten zurückgeben.

bearbeiten 1

-Code für setup:

const setup = propOverrides => { 
    const props = Object.assign({ 
    children: null, 
    type: 'None', 
    }, propOverrides) 

    const wrapper = shallow(<NotFoundCard {...props} />) 

    return { 
    props, 
    wrapper, 
    card: wrapper.find(Card), 
    title: wrapper.find(CardTitle), 
    text: wrapper.find(CardText), 
    link: wrapper.find(LinkButton), 
    } 
} 
+0

'const text = link.text()' zu diesem doc (es chai-enzyme verwendet) beziehen https://github.com/airbnb/enzyme/blob/master/docs /api/ReactWrapper/text.md –

+0

Zeigen Sie Ihre Setup-Funktion. – FakeRainBrigand

+0

@FakeRainBrigand: Aktualisiert. –

Antwort

1

denke ich, der richtige Weg, dies zu tun, ist die Schaltfläche Element zu überprüfen, eine Stütze children mit dem Wert übergeben wurden Sie wollen.

Dieser Test geht

describe('Link',() => { 
    it('should have text',() => { 
    const Link =() => (
     <a> 
     <button to="/projects">See list of all projects</button> 
     </a> 
    ); 

    const wrapper = shallow(<Link />); 
    expect(wrapper.find('button')).to.have.prop(
     'children', 
     'See list of all projects' 
    ); 
    }); 
}); 
Verwandte Themen