Nea*_*sle 32 ruby testing tdd capybara
我试图让Capybara运行在一个简单的Ruby脚本中 - 即没有/在Rails之外.这是脚本:
require 'rubygems'
require 'capybara'
require 'capybara/dsl'
include Capybara
Capybara.current_driver = :selenium
Capybara.app_host = 'http://www.google.com'
visit('/')
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行这个时,我收到此错误:
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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更多信息:
谢谢!
尼尔
注意:根据jnicklas的评论我试过这个,它更接近地匹配新的README:
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
Run Code Online (Sandbox Code Playgroud)
不幸的是,我仍然看到同样的错误:
NameError: uninitialized constant Capybara::Session
Run Code Online (Sandbox Code Playgroud)
思考?
谢谢!
Pål*_*erg 29
这似乎对我有用:
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
Run Code Online (Sandbox Code Playgroud)
它表明,即使不正确的文档永远存在.Capybara README曾经建议将Capybara包含在全局命名空间中,这是一个非常糟糕的主意,并且会乱搞任意数量的随机事物.您应该在自己的模块或类中包含Capybara并使用它.
查看README以了解当前的最佳实践.