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.
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
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? –
Avez une question mise à jour avec l'exemple de code – fearofawhackplanet