2017-07-26 1 views
1

Je construis l'emballage:Enzyme - Mount ne peut pas trouver l'élément par id

this.wrapper = mount(<App />, { context: this.store }); 

Ensuite, j'essaie de trouver un certain élément HTML par son id:

console.log("WRAPPER:", this.wrapper.debug()); 
return this.wrapper.find('#Form-input[0]-fields-field1'); 

L'emballage ne peut pas trouve cet élément. La sortie du fichier console.log est la suivante:

WRAPPER: 
<Many children/components down...> 
    <input name="Form-input[0].fields.field1" onBlur={[Function]} onChange={[Function]} onDragStart={[Function]} onDrop={[Function]} onFocus={[Function]} value="asdf" type="text" id="Form-input[0]-fields-field1" disabled={false} /> 
<Many more things after this...> 

L'entrée avec l'ID correct est donc définitivement présente. Est-ce que je manque quelque chose?

Répondre

2

Il semble que vous utilisez un sélecteur d'ID #Form-input[0]-fields-field1 mais je crois que [ et ] ne sont pas valides pour CSS IDs, vous pourriez peut-être rechercher l'entrée par son nom, ne input[name="Form-input[0]-fields-field1"] travail? Et si je me trompe et que les crochets sont en fait OK, vous devrez peut-être encore leur échapper dans la requête!

+0

Vous avez raison! Cependant, il semble que wrapper.find n'autorise pas les caractères échappés. Ainsi, j'ai fini par le résoudre en appelant wrapper.find ({id: 'Form-input [0] -fields-field1'}) qui a bien fonctionné. – Infamous911

+0

Content de l'avoir réparé! J'ai vérifié le repo d'Enzyme pour les problèmes liés à ceci - ils travaillent sur une solution pour améliorer des sélecteurs. –

+0

Ouais le fait que l'argument de 'find' ne soit pas traité comme une chaîne de sélection css normale est super déroutant! Il semble qu'il cherche le caractère], à quel point il ignore tout le reste après ce personnage. – Infamous911