Ответ 1
Эта ошибка возникает при установке RSpec 3.0.0.beta при продолжении запуска Capybara 2.1.0. Если вы установите Capybara 2.2.0.beta, ошибка исчезнет.
После обновления до RSpec 3.0 я получил следующее сообщение:
Failure/Error: Unable to find matching line from backtrace
NameError:
undefined local variable or method `example' for #<RSpec::ExampleGroups::Anonymous:0x007f9ae985b548>
Сообщение сохранялось даже после сокращения спецификации до следующего:
describe "" do
it "" do
end
end
Я заметил, что capybara находился около вершины стека, как показано ниже:
# /Users/palfvin/.rvm/gems/[email protected]/gems/capybara-2.1.0/lib/capybara/rspec.rb:20:in `block (2 levels) in <top (required)>'
в случае, если это помогает.
Эта ошибка возникает при установке RSpec 3.0.0.beta при продолжении запуска Capybara 2.1.0. Если вы установите Capybara 2.2.0.beta, ошибка исчезнет.
У меня была аналогичная проблема с крюком before
.
Кажется, что RSpec < 3 предоставил объект example
в каждом крючке, например:
config.before(:each) do
if example.metadata[:js] # <--- this fails!
# do something
end
end
В RSpec >= 3 вам нужно передать явный примерный параметр в блок:
config.before(:each) do |example| # <--- see here!
if example.metadata[:js]
# do something
end
end
Для некоторых несвязанных причин я не смог обновить Capybara, поэтому я использую этот патч обезьяны (добавьте файл в spec/support):
module Capybara
module DSL
def example
RSpec.current_example
end
end
end
У меня была такая же ошибка, но не в Capybara, но в моих характеристиках. Я нашел и заменил example.
на RSpec.current_example.
, и теперь он работает. Кажется, example
теперь RSpec.current_example
.
Они работали на меня, используя Ruby2/Rails4/RSpec3.0.0.beta и Capybara2.2.0.beta: ruby 2.0.0p353 (версия 2013-11-22 43784) [x86_64-linux]
Gemfile
...
gem 'rails', '4.0.1'
group :development, :test do
gem 'rspec-rails','~>3.0.0.beta'
gem 'factory_girl_rails'
end
group :test do gem 'faker' gem 'capybara', ' > =2.2.0.beta' gem 'guard-rspec' gem 'launchy' end
введите спецификации Capybara в спецификации/функции, а не спецификации/запросы.
Отметьте все группы примеров, в которых вы хотите использовать Capybara, с:
describe "Users", :type => :feature do ... end
Добавьте следующую строку в spec_helper.rb:
require 'capybara/rspec'
и добавьте DSL в блок RSpec.config
RSpec.configure do |config| block ... config.include Capybara::DSL