Ответ 1
Что касается проблем rspec (https://github.com/rspec/rspec-rails/issues/360)
вы должны положить
config.include Capybara::DSL
в spec_helper.rb внутри блока конфигурации.
Мое веб-приложение 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'
Что касается проблем rspec (https://github.com/rspec/rspec-rails/issues/360)
вы должны положить
config.include Capybara::DSL
в spec_helper.rb внутри блока конфигурации.
Каталог по умолчанию, который Capybara::RSpec
теперь выглядит, чтобы включить Capybara::DSL
и Capybara::RSpecMatchers
, изменился с requests
на features
.
После того, как я переименовал свой каталог requests
в features
, я снова получил методы сопряжения и DSL, не добавляя их явно.
См. следующие commit
Также убедитесь, что ваши тесты находятся в каталоге /spec/features. Согласно rspec-rails и capybara 2.0, Capybara v2 и выше будут недоступны по умолчанию в спецификациях запросов RSpec. Они предлагают "... переместить любые тесты, которые используют capybara от spec/запросов к spec/features".
По умолчанию DSL capybara включается автоматически, если файл находится в spec/request, spec/integration или если в группе примеров есть :type => :request
.
Поскольку ваш файл находится в spec/home, помощники capybara не включены. Вы можете либо соответствовать одному из вышеприведенных шаблонов, либо добавить include Capybara::DSL
, а также выполнить трюк (возможно, вам также понадобится реплицировать некоторые элементы before(:each)
, которые будут установлены).
Если вы не достигли успеха,
Добавьте этот код и ваш конец вашего помощника spec действительно из блока RSpec.configure, а также
module ::RSpec::Core
class ExampleGroup
include Capybara::DSL
include Capybara::RSpecMatchers
end
end
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'