Ruby on rails 无法在Rails中设置capybara
我正在学习如何使用Capybara在Rails中的一个简单应用程序上进行集成测试 但是,我在运行“rspec spec”时出错:Ruby on rails 无法在Rails中设置capybara,ruby-on-rails,rspec,capybara,Ruby On Rails,Rspec,Capybara,我正在学习如何使用Capybara在Rails中的一个简单应用程序上进行集成测试 但是,我在运行“rspec spec”时出错: bundle exec rspec spec /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/dsl.rb:1: warning: loading in progress, circular require considered
bundle exec rspec spec
/home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/dsl.rb:1: warning: loading in progress, circular require considered harmful - /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara.rb
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `<main>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `eval'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/rspec:23:in `<main>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/rspec:23:in `load'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/exe/rspec:4:in `<top (required)>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:38:in `invoke'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:70:in `run'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:85:in `run'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:96:in `setup'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:22:in `configure'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:100:in `process_options_into'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:100:in `each'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:101:in `block in process_options_into'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `requires='
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `each'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `block in requires='
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `require'
from /home/alex/git-projects/rails-projects/qotd2/spec/spec_helper.rb:6:in `<top (required)>'
from /home/alex/git-projects/rails-projects/qotd2/spec/spec_helper.rb:6:in `require'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/rails.rb:1:in `<top (required)>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/rails.rb:1:in `require'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara.rb:5:in `<top (required)>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara.rb:320:in `<module:Capybara>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara.rb:320:in `require'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/dsl.rb:1:in `<top (required)>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/dsl.rb:1:in `require'
/home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/node/matchers.rb:121: warning: assigned but unused variable - e
/home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/selenium/driver.rb:119: warning: assigned but unused variable - a
/home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/rails.rb:6:in `block (2 levels) in <top (required)>': uninitialized constant Rails (NameError)
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:145:in `new'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:145:in `block in generate_map'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:145:in `each'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:145:in `generate_map'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rack-1.5.2/lib/rack/builder.rb:132:in `to_app'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/capybara-2.3.0/lib/capybara/rails.rb:13:in `<top (required)>'
from /home/alex/git-projects/rails-projects/qotd2/spec/spec_helper.rb:6:in `require'
from /home/alex/git-projects/rails-projects/qotd2/spec/spec_helper.rb:6:in `<top (required)>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `require'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `block in requires='
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `each'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration.rb:1018:in `requires='
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:101:in `block in process_options_into'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:100:in `each'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:100:in `process_options_into'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/configuration_options.rb:22:in `configure'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:96:in `setup'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:85:in `run'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:70:in `run'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:38:in `invoke'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/rspec-core-3.0.0/exe/rspec:4:in `<top (required)>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/rspec:23:in `load'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/rspec:23:in `<main>'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `eval'
from /home/alex/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `<main>'
我的测试用例(位置:/spec/features/users\u spec.rb)
:
我的spec\u helper.rb(位置:/spec/spec\u helper.rb)
:
这里提供了一些解决方案,例如将测试用例放在features文件夹中,以及为capybara DSL创建配置语句。但我似乎无法让水豚发挥作用。似乎我的情况有点独特,尤其是上面的错误消息。需要注意的一点是,在运行railsgrspec:install
之后,我的spec\u helper.rb
为空(这正常吗?)。因此,上面的代码非常简洁
有什么想法吗?删除.rspec中的警告
我也有类似的问题。仅使用
需要“水豚”
在我的spec_helper.rb文件中,而不是
需要“水豚/rails”
需要“水豚/rspec”
已通过“未初始化常量轨道(NameError)”
我仍然收到了有关通知要求的警告,但测试运行正常
*编辑*我必须补充:
——需要规格帮助器
——需要rails\u助手
在项目目录的.rspec文件中,也可以让测试最终正确运行(rspec3.0)。@mkmadd的回答解决了我的问题。我还建议遵循Romanwv的提示并删除.rspec中的警告,这样可以省去一些麻烦。尝试卸载测试和开发环境中的所有gems,然后运行
捆绑安装
您不需要包含Capybara::DSL
。
group :test do
gem 'fake'
gem 'capybara'
gem 'database_cleaner'
gem 'launchy'
end
group :development, :test do
gem 'rspec-rails'
gem 'factory_girl_rails'
gem 'guard-rspec'
gem 'growl'
gem 'dotenv-rails'
end
require 'spec_helper'
describe 'User authentication' do
context 'new user signs up' do
it "saves the new user" do
visit "/"
expect {
click_button 'Sign up'
fill_in 'Name', with: 'alexjiao'
fill_in 'Email', with: "alexjiao@yahoo.com"
fill_in 'Password', with: 'asdfasdf'
fill_in 'Password confirmation', with: 'asdfasdf'
click_button 'Create my account'
}.to change(User, :count).by(1)
end
end
end
require 'capybara/rails'
require 'capybara/rspec'
RSpec.configure do |config|
config.include Capybara::DSL
end