2011-07-22 3 views
2

Étant donné que j'ai une page avec une liste de 10 utilisateurs, Comment puis-je tester que j'ai 10 liens show utilisateur?capybara comment tester plusieurs liens avec le motif href

J'ai essayé ceci:

Then /^I should see a list of (\d+) users$/ do |num| 
    page.should have_selector('a', {:href=>"users/*", :count => num}) 
    end 

Et ceci:

Then /^I should see a list of (\d+) users$/ do |num| 
    page.should have_selector('a', {:href=>/users\/\d+/, :count => num}) 
    end 

Mais à la fois le rendement attendu css "un" retour à quelque chose (RSpec :: attentes :: ExpectationNotMetError)

Si j'omets le paramètre: count, cependant, le test passe toujours ce que j'ai (même motif défectueux) dans le paramètre: href.

+0

Pas une solution, mais ne serait-il pas plus facile d'ajouter une classe "user" à vos liens, plutôt que de vous embêter avec une regex? –

+0

Cela pourrait être une solution, mais je ne voulais pas compter sur le balisage. Le user_path est le seul pense que je suis sûr que cela ne changera pas sur ma page. – demental

Répondre

5

Je voudrais utiliser un XPath avec la fonction contains pour cela:

page.should have_xpath("//a[contains(@href,'users')]"), :count => num) 

doit correspondre à num occurrences d'un élément a avec un attribut href contenant le texte des « utilisateurs ».

Questions connexes