J'ai un champ avec une étiquette appropriée que je peux remplir avec capybara sans problème:
fill_in 'Your name', with: 'John'
Je voudrais vérifier la valeur qu'il a avant de le remplir et je ne peux pas le comprendre.
Si j'ajoute après la fill_in
ligne suivante:
find_field('Your name').should have_content('John')
Ce test échoue, bien que le remplissage juste avant ait fonctionné comme je l'ai vérifié en enregistrant la page.
Qu'est-ce que je rate?
.value
peu. Merci!find_field
et d'autresNode::Finders
sont utilisés pour trouver des nœuds et effectuer des actions sur eux plutôt que des attentes. Bien sûr, ce n'est pas une règle, mais pour quelque chose de simple comme cela, aller avec la solution intégrée est une meilleure idée. Je dis juste!Une autre jolie solution serait:
ou
respectivement.
Voir également la référence .
Remarque : pour les entrées désactivées, vous devrez ajouter l'option
disabled: true
.la source
with
ne retournait définitivement true que si la valeur correspond, pour moi, au résultat attendu.expected […] but there were no matches. Also found "", which matched the selector but not all filters..
un champ vide qui est très proche d'un très beau message d'erreur.Si vous souhaitez spécifiquement tester un espace réservé, utilisez:
ou:
Si vous souhaitez tester la valeur saisie par l'utilisateur:
la source
Je me demandais comment faire quelque chose de légèrement différent: je voulais tester si le champ avait une certaine valeur (tout en utilisant la capacité de Capybara à re-tester le matcher jusqu'à ce qu'il corresponde ). Il s'avère qu'il est possible d'utiliser un "bloc de filtre" pour ce faire:
la source