Je veux avoir un test dans rspec pour l'existence d'un bouton de soumission. Je suis à l'aide de capybara.
J'ai essayé:
should have_tag("input","Submit button")
et
should have_content("Submit, button")
mais elle soulève une exception ou donne des faux positifs.
source d'informationauteur sonnyhe2002
Ce sont toutes de bonnes suggestions, mais si vous voulez confirmer que c'est un bouton et qu'il a le droit de valeur (pour l'affichage), vous devez être un peu plus détaillé:
Je ne sais pas d'un comparateur qui fait cela. Voici une coutume RSpec2 matcher j'ai écrit:
Voici la RSpec3 version (avec la permission de @zwippie):
Je le garde dans
spec/support/matchers/request_matchers.rb
avec mon autre coutume de rapprochement. RSpec reprend automatiquement. Puisque c'est un RSpec matcher (plutôt que d'un Capybara finder), il fonctionnera dans les deux disposent de spécifications (Capybara) et voir les specs (RSpec sans Capybara).Spécifications des fonctions d'utilisation:
Vue spec utilisation (après l'appel de
render
):Noter que si vous êtes dans un Capybara demande spec, et vous souhaitez interagir avec un bouton de soumission, qui est beaucoup plus facile:
Il n'y a aucune garantie que c'est en fait un bouton de soumission, mais votre fonction spécifications faut juste tester le comportement et ne pas se soucier de ce niveau de détail.
Il est intégré dans le comparateur de has_button?.
À l'aide de RSpec, vous pouvez avoir une assertion comme
Ou avec de nouveaux RSpec 3 syntaxe:
J'en ai un (utilisé pour le concombre):
Dans négatives: have_no_button
si votre HTML marque est juste quelque chose comme:
Ensuite, vous pouvez effectuer les opérations suivantes dans le capybara:
J'ai quelque chose comme:
Essayer cette
Essayer:
Mise à JOUR: je crois que cette réponse peut ne fonctionne pas comme souhaité dans certains cas. Quand je l'utilise pour tester la valeur dans d'autres balises input, il semble passer n'importe quelle en est la valeur.