2013-07-10 6 views
0

Je souhaite isoler des nœuds spécifiques sur lesquels tester.Rspec test de nœuds spécifiques en réponse

par exemple. au lieu de

get :show 
response.should have_content(@user.name) 

il serait plus descriptif/correct pour pouvoir écrire quelque chose comme

get :show 
profile = response.find_selector("div.user-profile") 
profile.should have_content(@user.name) 

est-il possible?

MISE À JOUR

Vous avez un peu plus loin avec ce après avoir lu la réponse de Pierre, mais pas encore de trouver des éléments.

dans app\views\users\index.html.erb

<h1>Users</h1> 
<div id="test"></div> 

dans spec\controllers\users_controller_spec.rb

require 'spec_helper' 

describe UsersController do 

    render_views 

    it "should should have header" do 
    get :index 
    response.should have_selector("h1", content: "Users")   
    end 

    it "should show user profile" do 
    get :index 
    node = page.find_by_id("test") 
    p node 
    end 

end 

La première passe test, le second test donne erreur ElementNotFound. Je suis peut-être juste en train de faire quelque chose de stupide car c'est mon premier rendez-vous chez Rails.

Répondre

1

Oui, c'est possible. Capybara n'a pas find_selector, mais il a find et dérivés qui prennent un locator et se comportent comme vous l'avez laissé entendre ci-dessus. Voir http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders

Par exemple, au lieu de:

page.should have_selector('foo', text: 'bar') 

vous pouvez dire:

node = page.find('foo') 
node.should have_content('bar') 
+0

Salut Peter, je ne peux pas le faire fonctionner, pourriez-vous donner un exemple s'il vous plaît? 'get: index; Capybara :: Node :: Simple.new (response.body) .find ("# test"); 'Ceci ne trouve pas l'élément. Je suis nouveau à Ruby alors peut-être que vous avez mal lu les docs. – fearofawhackplanet

+0

Voir la réponse mise à jour pour un exemple que je viens de tester avec l'un de mes tests existants. Quant à savoir pourquoi l'extrait de code que vous avez donné n'a pas fonctionné, j'aurais besoin de voir plus. Avez-vous essayé de modifier l'exemple que vous avez donné dans votre question? –

+0

Avez une question mise à jour avec l'exemple de code – fearofawhackplanet