2013-03-09 6 views
0

Je suis en train d'écrire des tests pour mon application avec des gemmes répertoriées. Je ne pouvais pas trouver comment mettre Capybara à travailler avec colonne vertébrale (ajax en tout)
exemple test:test rails + application backbone avec rspec & capybara

require 'spec_helper' describe "Main" do describe "GET /" do 
    it "displays articles" do 
     Article.create!(title:'title',body:'<p>body text</p>') 
     visit '/' 
     page.should have_content('body text') 
    end 
    end 
end 

et sortie du test:

Failures: 

    1) Main GET/displays articles 
    Failure/Error: page.should have_content('body text') 
     expected there to be text "body text" in "Loading..." 
    # ./spec/features/main_spec.rb:8:in `block (3 levels) in <top (required)>' 

"Chargement en cours ..." est le pré texte ajax dans mon modèle de vue ...

le point est que je ne veux pas utiliser Jasmine au moment de cette application

Répondre

3

Il semble que vous utilisez Ca pybara avec le pilote Rack :: Test par défaut, ce qui signifie pas de JavaScript. Rack :: Test charge votre application en cours de traitement et simule un navigateur DOM derrière l'API Capybara.

Vous devez utiliser un pilote qui exécute vos tests dans un vrai navigateur Web. Il y a quelques options différentes: un pilote Selenium est livré avec Capybara et exécute vos tests dans un vrai navigateur (normalement Firefox), d'autres sont implémentés dans des gemmes séparées, telles que Poltergeist qui utilise PhantomJS et le navigateur WebKit sans tête.

Il existe des instructions sur le Capybara readme concernant la configuration du bon pilote. Vous pouvez passer un groupe de tests pour utiliser un pilote supportant JavaScript en ajoutant l'option js à décrire un bloc, par exemple:

describe "Main with JavaScript", :js => true do 
    # ... 
end 
+0

Cette http://www.opinionatedprogrammer.com/2011/02/capybara-and- sélénium-avec-rspec-et-rails-3/peut vous aider – Sakeer

Questions connexes