2012-03-29 2 views
0

J'ai commenté [get "pages/home"] dans mon dossier routes.rb, redémarré mon environnement de test complet et le test suivant passe TOUJOURS:incompatibles Rspec/Tests Capybara

it "should contain 'This is a test'" do 
    get 'home' 
    response.body.should have_selector("p") 
end 

De ma compréhension, Capybara exécute les tests rspec à partir d'un «navigateur» en mémoire. Si c'est le cas, les chemins de rails DOIVENT exister! Après avoir commenté mes routes, il est toujours capable de charger les pages - je le sais parce que si je supprime le sélecteur <p> le test échoue. Après avoir modifié le fichier routes.rb, j'ai redémarré ma suite de tests mais cela ne fait pas de différence. Cela me fait perdre la confiance dans le processus de test parce que j'ai des tests qui passent qui ne devraient pas passer !!

+0

Montrez-nous le '_spec.rb' complet. Peut-être avez-vous 'avant (: each)' avec 'get 'home'' quelque part. –

Répondre

1

Il semble que ce fragment se trouve dans une spécification de contrôleur qui frappe directement votre contrôleur. Dans la dernière version de rspec, 2.9.0, une mauvaise route ne fera pas échouer cet exemple. Les routes sont en dehors de la portée d'une spécification de contrôleur.

Il semble que vous avez voulu écrire une spécification de la demande, qui devrait utiliser la méthode de capybara visit:

# spec/requests/something_spec.rb 
require 'spec_helper' 

describe 'home page' do 

    it "should contain 'This is a test'" do 
    visit '/pages/home' 
    page.should have_content 'This is a test' 
    end 

end 

Voir la capybara docs pour plus d'exemples. Rspec prend également en charge routing specs, mais je n'utilise généralement celles-ci pour un routage inhabituel.

+0

Très intéressant. Donc pendant tout le temps que je fais [rentrer 'à la maison'] dans le bloc 'ça', ça ne frappe même pas Capybara? J'ai pensé que [obtenir 'quelque chose'] s'appelait Capybara, mais apparemment, c'est juste Rspec. Est-ce correct? Et oui, c'est un test de contrôleur. – dingalingchickenwiing

+0

Oui, capybara ajoute 'visit',' click_on', 'fill_in', etc. Jetez un oeil aux docs capybara liés ci-dessus pour beaucoup d'exemples. –