2017-07-12 2 views
0

Donc, je vois habituellement environ 3-4 exemples différents quand je "affirme" du texte par exemple.Confusion sur les "Matchers" de Capybara

Les docs capybara même mentionner plus de 1

assert_text('foo')

page.has_text?('bar')

page.should have_content('baz') (qui apparemment have_content est la même a have_text)

expect(page).to have_content('boop')

Alors ... C'est 4 façons différentes de vérifier la même chose . Je sais que le expect est un matcher rspec ... mais qu'en est-il du reste? Que DEVRAIS-je utiliser? Les docs de Capybara ne font malheureusement pas la différence entre eux.

Merci!

Répondre

1

assert_text('foo') est une assertion généralement utilisée avec minitest.

page.has_text?('bar') est juste une méthode qui retourne vrai ou faux. Vous utiliseriez ceci si vous vouliez changer de comportement en fonction de la présence ou du manque de présence de texte sur la page. Non utilisé très souvent lors du test d'une application car vous devez savoir à quoi vous attendre sur la page et ne pas avoir besoin d'effectuer un comportement différent en fonction du contenu. Peut être utile si automatiser/gratter si. (Ce qui a apparemment have_content est le même que has_text) - Comme vous l'avez dit, has_text est un alias pour have_content donc vous pouvez utiliser celui que vous préférez. have_content est un matcher RSpec et ne sera utilisé que lors de l'utilisation de RSpec. should est l'ancienne syntaxe RSpec qui nécessitait patcher la méthode should sur chaque objet et a depuis été remplacé par expect

attendre (page) .à have_content (« boop ») - courant RSpec syntaxe

Donc, si vous Si vous utilisez RSpec, vous pouvez utiliser soit le style expect ou le style should, bien que pour quelque chose de nouveau, vous souhaitiez probablement utiliser le style expect.