2017-09-28 1 views
0

Je suis nouveau à React-native et à l'enzyme, j'essaie de créer un composant personnalisé ici. Je vais afficher une image basée sur this.props.hasIcon. J'ai défini la valeur par défaut des accessoires pour hasIcon comme true. Quand je vérifie Image existe dans l'enzyme ShallowWrapper. Je reçois false.En utilisant l'enzyme, Comment trouver un composant enfant dans un composant réac-natif

tlProgress.js

class TLProgress extends Component { 
    render() { 
    return (
     <View style={styles.container}> 
     {this.renderImage} 
     {this.renderProgress} 
     </View> 
    ); 
    } 
} 

TLProgress.defaultProps = { 
    icon: require("./../../img/logo.png"), 
    indeterminate: true, 
    progressColor: Colors.TLColorAccent, 
    hasIcon: true, 
    progressType: "bar" 
}; 

et renderImage() a le Image

renderImage() { 
    if (this.props.hasIcon) { 
     return <Image style={styles.logoStyle} source={this.props.icon} />; 
    } 
} 

Si je vérifie Image existe en enzyme am obtenir de faux.

tlProgress.test.js

describe("tlProgress rendering ",() => { 
    let wrapper; 
    beforeAll(() => { 
     props = { indeterminate: false }; 
     wrapper = shallow(<TLProgress {...props} />); 
    }); 

    it("check progress has app icon",() => { 
     expect(wrapper.find("Image").exists()).toBe(true); // fails here.. 
    }); 
}); 

Répondre

1

Vous n'êtes pas appeler la Fonction renderImage dans votre render() - vous avez oublié les parenthèses, ainsi il est interprété comme une variable indéfinie. Tobe (vrai) (Je suppose que vous voulez appeler renderProgress() et non renderProgress ainsi)

class TLProgress extends Component { 
    render() { 
    return (
     <View style={styles.container}> 
     {this.renderImage()} 
     {this.renderProgress()} 
     </View> 
    ); 
    } 
+1

oui .. merci :) – user2906641

0

Vous recherchez une balise appelée 'image' au lieu de chercher votre composant image

Il devrait être:

import Image from '../Image'; 
wrapper.find(Image) //do your assert here 
+0

'attendre (wrapper.find (image) .exists()):

Il devrait être. ; 'me donne' false' .. il échoue .. – user2906641

+0

@ user2906641 essayez de remplacer shallow avec mount –

+0

ya que j'ai essayé cela en premier, j'ai eu une erreur 'la monture de l'enzyme s'attend à ce qu'un environnement DOM soit chargé, mais n'a pas été trouvé .. Puis j'ai utilisé peu profond. – user2906641