28 votes

Comment utiliser Capybara en Ruby pur (sans Rails)?

Je vais essayer d'obtenir le Capybara cours d'exécution dans un simple script Ruby -- c'est à dire sans/à l'extérieur des Rails. Voici le script:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

include Capybara

Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

visit('/')

Le problème est que lorsque je l'exécute, j'obtiens cette erreur:

NameError: uninitialized constant Capybara::Session

at top level    in dsl.rb at line 52
method gem_original_require in custom_require.rb at line 36
method require  in custom_require.rb at line 36
at top level    in capybara_test.rb at line 3
method gem_original_require in custom_require.rb at line 31
method require  in custom_require.rb at line 31
at top level    in capybara_test.rb at line 

Ce que je fais mal?

Quelques infos:

  • Mac OS X 10.5
  • ruby 1.8.6 (2009-06-08 version 369) [universelle-darwin9.0]
  • le capybara (0.3.9)

Merci!

Neal

Remarque: Par l'observation de jnicklas j'ai essayé ce qui correspond à la nouvelle README de plus près:

require 'rubygems'
require 'capybara'
require 'capybara/dsl'

Capybara.default_driver = :selenium
Capybara.app_host = 'http://www.google.com'

module MyCapybaraTest
  include Capybara

  def test_google
    visit('/')
  end
end

Malheureusement, je suis toujours de voir le même message d'erreur:

NameError: uninitialized constant Capybara::Session

Pensées?

Merci!

25voto

Pål Brattberg Points 2993

Voici quelque chose qui semble fonctionner pour moi:

 require 'rubygems'
require 'capybara'
require 'capybara/dsl'

Capybara.run_server = false
Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'

module MyCapybaraTest
  class Test
    include Capybara::DSL
    def test_google
      visit('/')
    end
  end
end

t = MyCapybaraTest::Test.new
t.test_google
 

5voto

jnicklas Points 572

Cela montre que même une documentation incorrecte existe pour toujours. Le README de Capybara recommandait d'inclure Capybara dans l'espace de noms global, c'est une très mauvaise idée et gâche un certain nombre de choses aléatoires. Vous devez inclure Capybara dans votre propre module ou classe et l'utiliser à la place.

Consultez le README pour les meilleures pratiques actuelles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X