2012-05-22 1 views
1

Je suis en train d'utiliser le test suivant pour voir si un formulaire de connexion redirige correctement:objet Response dans Rspec 1.3.4 avec Capybara

it "should allow you to login" do 
    visit "/" 
    fill_in 'Email', :with => '[email protected]' 
    fill_in 'Pass', :with => 'password' 
    click_button 'Login' 
    response.should be_redirect 
end 

Cependant, rspec échoue avec le message que la réponse n'existe pas . Je cours une application de rails 2.3.4, ainsi j'ai rspec 1.3.4 installé. Comment puis-je tester la réponse?

+0

mon conseil dans des situations comme celle-ci est d'utiliser la pierre Pry et placez binding.pry juste avant la ligne de réponse. Vous pouvez ensuite inspecter les objets Capybara comme ceci, page, etc. – Ivan

Répondre

0

Je suppose qu'il s'agit d'une spécification d'intégration (ce que RSpec appelle une 'spécification de requête' dans la version 2)? Si c'est le cas, l'objet de réponse n'est pas disponible. Pour cela, vous aurez besoin d'une spécification de contrôleur, .: par exemple

describe MyController do 
    it "should redirect" do 
    post :some_path, {:email => '[email protected]', :pass => 'password'} 
    response.should be_redirect 
    end 
end 

Ou dans votre spec d'intégration, de tester le chemin prévu après une redirection réussie. Cela fonctionne dans RSpec 2, pas sûr RSpec 1:

current_path.should == "/some_path"