Метод посещения не найден в моем rspec - PullRequest
52 голосов
/ 14 января 2012

Мое веб-приложение на Java запускается на tomcat с http://localhost:8080/

Написание моей первой спецификации, home_spec:

require 'spec_helper'


describe "home" do

    it "should render the home page" do
       visit "/"

       page.should have_content("hello world")
    end

end

И выполняется:

rspec

Я получаю:

F

Failures:

  1) home should render the home page
     Failure/Error: visit "/"
     NoMethodError:
       undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x242870b7>
     # ./spec/home/home_spec.rb:7:in `(root)'

Finished in 0.012 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/home/home_spec.rb:6 # home should render the home page

Разве это не должно работать, потому что я включил капибару в spec_helper?

Как он узнает, что посетил правильный URL?Что делать, если мой URL-адрес localhost: 3030 или localhost: 8080?

Мой gemfile:

source 'http://rubygems.org'

gem "activerecord"
gem "rspec"
gem "capybara"
gem "activerecord-jdbcmysql-adapter"

Мой spec_helper:

require 'capybara/rspec'

Ответы [ 6 ]

134 голосов
/ 19 октября 2012

Что касается проблем rspec (https://github.com/rspec/rspec-rails/issues/360)

, вы должны поместить

config.include Capybara::DSL

в spec_helper.rb внутри блока конфигурации.

23 голосов
/ 25 января 2013

Каталог по умолчанию, в который Capybara::RSpec теперь входит Capybara::DSL и Capybara::RSpecMatchers, изменен с requests на features.

После того, как я переименовал свой каталог requests в features, я снова получил доступ к методам matcher и DSL без необходимости их явного включения.

Смотрите следующее commit

9 голосов
/ 08 февраля 2013

Также убедитесь, что ваши тесты находятся в каталоге / spec / features . В соответствии с rspec-rails и capybara 2.0 , Capybara v2 и выше не будут доступны по умолчанию в спецификациях запроса RSpec. Они предлагают «... переместить любые тесты, использующие капибару, из спецификации / запросов в спецификации / функции».

6 голосов
/ 14 января 2012

По умолчанию DSL-капибара включается автоматически, если файл находится в спецификации / запросах, спецификации / интеграции или если в группе примеров :type => :request.

Поскольку ваш файл находится в spec / home, помощники по капибаре не включены. Вы можете либо соответствовать одному из приведенных выше шаблонов, либо добавить include Capybara::DSL, что также поможет (вам также может понадобиться повторить некоторые из before(:each) элементов, которые будут настроены.)

1 голос
/ 28 мая 2012

Первая проверка

Если вы не добились успеха,

Добавьте этот код в конец вашего помощника спецификаций и из блока RSpec.configure

module ::RSpec::Core
  class ExampleGroup
    include Capybara::DSL
    include Capybara::RSpecMatchers
  end
end
0 голосов
/ 12 декабря 2014

1) Добавить в конфигурационный файл rails_helper:

config.include Capybara::DSL
config.include Capybara::RSpecMatchers

And comment out the `require 'spec_helper'` line.

2) Добавить в 'spec_helper':

require 'rails_helper'
...