Je viens d'apprendre à quel point RSpec et Cabybara sont cool, et je travaille maintenant pour apprendre à écrire un test réel.
J'essaie de vérifier si après avoir cliqué sur un lien, il y a une redirection vers une page spécifique. Voici le scénario
1) J'ai une page /projects/list - J'ai une ancre avec html "Back" et elle est liée à/projects/show Vous trouverez ci-dessous le test que j'ai écrit dans rspec Décrivez "Échantillon" faites Décrivez "GET/projets/liste" faites Ce "échantillon test" visitez "/projects/list" click_link" Retour " assert_redirected_to"/projects/show " end end fin
Le test échoue avec un message d'échec comme ci-dessous
Échec/erreur: assert_redirected_to "/projects/show" ArgumentError: @Request doit être un ActionDispatch :: Request
Veuillez me suggérer comment tester la redirection et que fais-je de mal?
Essayez current_path.should == "/projects/show"
Capybara implémente également un current_url
méthode pour l'URL complète.
Plus d'informations dans le docs .
Je ne suis pas sûr que cela puisse être ce dont vous avez besoin, mais dans mes tests, je préfère une telle approche:
...
subject { page }
...
before do
visit some_path_path
# do anything else you need to be redirected
end
it "should redirect to some other page" do
expect(page.current_path).to eq some_other_page_path
end
Depuis le Devise wiki :
Dans Rails lorsqu'une application rack redirige (tout comme Warden/Devise vous redirige vers la page de connexion), la réponse n'est pas correctement mise à jour par la session d'intégration. Par conséquent, l'assistant assert_redirected_to ne travail.
Cette page a également les mêmes informations: Rspec assurez-vous que nous nous sommes retrouvés au bon chemin
Vous devrez donc tester que vous êtes maintenant sur cette URL, plutôt que de vérifier que vous y êtes redirigé.