Подтвердить что ты не робот

Метод посещения не найден в моем rspec

Мое веб-приложение 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

Не должно ли это работать, потому что я включил capybara в 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'
4b9b3361

Ответ 1

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

вы должны положить

config.include Capybara::DSL

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

Ответ 2

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

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

См. следующие commit

Ответ 3

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

Ответ 4

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

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

Ответ 5

Сначала проверьте

Если вы не достигли успеха,

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

module ::RSpec::Core
  class ExampleGroup
    include Capybara::DSL
    include Capybara::RSpecMatchers
  end
end

Ответ 6

1) Добавить в 'rails_helper config:

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

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

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

require 'rails_helper'