簡體   English   中英

未初始化的恆定水豚

[英]Uninitialized constant Capybara

我在使用Capybara的導軌中運行測試時遇到問題。 每當我運行它時,它告訴我在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',但他們仍然給我錯誤,然后一些。

我找到了問題,我正在初始化常量水豚,因為在較新版本的rspec中,當你第一次創建一個spec文件夾時,它會創建一個新文件夾“rails_helper”,它會同時創建rails_helper和spec_helper。 spec文件夾中的第一個模擬斑點測試位於頂部

require 'rails_helper'

我正在按照一個教程告訴我要求'spec_helper',但對於較新版本的rspec則不然。

所以我補充道

config.include(Capybara::DSL)

在rails helper文件夾中,一切正常,除了我的css錯誤,但我相信這是因為測試運行無頭,所以他們不工作。 顯示所有錯誤后,規范測試運行正常。 如果您還有其他問題,請告訴我。

這很容易做到所需的一切,然后忘記通過Gemfile加載Capybara gem。 我這樣做了,所以這條消息對我來說很熟悉。

也許這種情況的證明對人們有幫助; 節省一些寶貴的時間。 :)

在以前的工作環境中,我通過在Gemfile中注釋掉水豚線來隱藏Capybara。 結果是一個類似的錯誤消息,'未初始化的常量Capybara(NameError)',由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)

順便提一下,OP可能一直在使用版本之前的Capybara版本,其中存在兩個文件:rails_helper和spec_helper。

在我的設置中,

config.include(Capybara::DSL)

在rails_helper.rb中。

順便說一句,如果您在spec_helper中看到Capybara的示例,那么這些頁面可能正在描述之前的文件組織。

添加require 'capybara/rails'到您的測試助手

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM