未初始化的恒定水豚

时间:2014-06-03 20:23:25

标签: ruby-on-rails ruby rspec capybara

我在使用Capybara在rails中运行测试时遇到问题。 每当我运行它时,它告诉我在spec_helper.rb文件中有一个'未初始化的常量Capybara(NameError)'。

我正在关注本教程: http://www.railstutorial.org/book/static_pages#code-capybara_dsl

这是我的spec_helper.rb

RSpec.configure do |config|
  config.include(Capybara::DSL)
end

我正在尝试运行此测试static_pages_spec.rb

require 'spec_helper'
  describe "Static pages" do

it "should have the content 'Sample App'" do
  visit '/static_pages/home'
  expect(page).to have_content('Sample App')
end 

如果还有其他更多信息,请告诉我

-------- UPDATE ----------------

我弄明白了这个问题。 Rspec的版本我在spec文件夹中创建了一个rails_helper.rb文件。我不得不这样做:

require 'capybara/rspec'

在该文件中,config.include Capybara :: DSL中的配置。

-----新问题------------ 但现在我遇到了另一个问题,就是说“访问”是不确定的。

 undefined method `visit' for #<RSpec::ExampleGroups::StaticPages::AboutPage:0x000001033f5d50>

我试过要求'capybara',并要求'capybara / dsl',但他们仍然给我错误,然后一些。

3 个答案:

答案 0 :(得分:1)

我发现了问题,我正在初始化恒定的水豚,因为在较新版本的rspec中,当你第一次创建一个spec文件夹时,它会创建一个新的文件夹“rails_helper”,它会同时创建rails_helper和spec_helper。 spec文件夹中的第一个模拟斑点测试在顶部

require 'rails_helper'

我正在按照一个教程告诉我要求'spec_helper',但对于较新版本的rspec则不然。

所以我添加了

config.include(Capybara::DSL)
在rails helper文件夹中的

一切正常,除了我的css错误,但我相信这是因为测试无头,所以他们不工作。显示所有错误后,规范测试运行正常。如果您还有其他问题,请告诉我。

答案 1 :(得分:1)

很容易做到所需的一切,然后忘记通过Gemfile加载Capybara gem。我已经这样做了,所以这条消息对我来说很熟悉。

也许这种情况的证明对人们有帮助;节省一些宝贵的时间。 :)

在以前的工作环境中,我通过在Gemfile中注释掉水豚线来隐藏Capybara。结果是一个类似的错误消息,&#39;未初始化的常量Capybara(NameError)&#39;,由rails_helper抛出:

$ rspec spec
Running via Spring preloader in process 17470
/Users/Art/RailsProjects/MyRailsProj/spec/rails_helper.rb:67:in `block in <top (required)>': uninitialized constant Capybara (NameError)

顺便提一下,O.P。可能在发布之前使用了一个版本的Capybara,其中存在两个文件:rails_helper和spec_helper。

在我的设置中,

config.include(Capybara::DSL)

位于rails_helper.rb。

顺便说一句,如果您在spec_helper中看到Capybara包含的示例,那么这些页面可能正在描述之前的文件组织。

答案 2 :(得分:0)

require 'capybara/rails'添加到测试助手