我在使用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',但他们仍然给我错误,然后一些。
答案 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'
添加到测试助手