简体   繁体   中英

Capybara: undefined method 'visit' - Test is already in spec/features

I have just started with RSpec and Capybara but got stuck on my first test. Here's me test code located in spec/features/pages_spec.rb :

require 'rails_helper'

RSpec.describe "Pages", :type => :request do
    describe "About Page" do
        it "should have the content 'About Us'" do
            visit '/pages/about'
            page.should have_content('About Us')
        end
    end
end

Running the test i get the following error :

01:06:59 - INFO - Running: spec

F

Failures:

1) Pages About Page should have the content 'About Us'
 Failure/Error: visit '/pages/about'
 NoMethodError:
   undefined method 'visit' for #<RSpec::ExampleGroups::Pages::AboutPage:0x007f975afe7380>
 # ./spec/features/pages_spec.rb:6:in `block (3 levels) in <top (required)>'
 # ./spec/rails_helper.rb:44:in `block (3 levels) in <top (required)>'
 # ./spec/rails_helper.rb:43:in `block (2 levels) in <top (required)>'

Finished in 0.02569 seconds (files took 1.65 seconds to load)

1 example, 1 failure

Failed examples:
rspec ./spec/features/pages_spec.rb:5 # Pages About Page should have the content 'About Us'

I've been searching about this for about an hour and everywhere I find the solution of moving the test code from spec/requests to spec/features .

I've also seen this here : http://www.rubydoc.info/gems/rspec-rails/file/Capybara.md which most of the solution suggests and it is not recommended to use.

# not recommended!
RSpec.configure do |c|
    c.include Capybara::DSL, :file_path => "spec/requests"
end

I've no idea how to proceed. Your help will be appreciated.

从描述块中取出:type => :request (覆盖从目录位置确定的规范类型),或将其更改为:type => :feature

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM