В предыдущих версиях rspe c я мог сделать что-то вроде:
spec / models / test_spe c .rb
require 'rails_helper'
describe 'something', :foobar do
it 'does not seem to be working' do
puts lol
end
end
spec / support / foobar.rb
shared_context 'foobar', :foobar do
let(:lol) { 'haha' }
end
spec / rails_helper.rb
...
RSpec.configure do |config|
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
end
Это будет работать нормально, мои спецификации будут иметь доступ ко всем методам / функциям, определенным в общем контексте ... Однако, когда обновление до rspe c -rails 4, теперь это приводит к:
Failure/Error: puts lol
NameError:
undefined local variable or method `lol' for #<RSpec::ExampleGroups::...
Rspe c, в последней документации говорится:
Мы также добавили конфигурацию опция, позволяющая определить, как обрабатываются метаданные общего контекста:
RSpe c .configure do | config | config.shared_context_metadata_behavior =: trigger_inclusion # или config.shared_context_metadata_behavior =: apply_to_host_groups end Прежнее значение (: trigger_inclusion) используется по умолчанию и существует только для обратной совместимости. Он обрабатывает метаданные, передаваемые в RSpe c .shared_context, точно так же, как они обрабатывались в RSpe c 3.4 и ранее: он запускает включение в группы с соответствующими метаданными. Мы планируем удалить его поддержку в RSpe c 4.
Последнее значение (: apply_to_host_groups) соответствует новому поведению. Вместо включения в группы с соответствующими метаданными, он применяет метаданные к группам узлов сети. Например, вы можете сосредоточиться на всех группах, использующих БД, пометив свой общий контекст:
RSpe c .shared_context «Поддержка БД»,: focus do # ... end
Однако, прочитав это более 5 раз, я так и не понял, что на самом деле означает «apply_to_host_groups». Что такое host group
??? Тем не менее, установка этого параметра конфигурации не решает эту проблему.
Я проверил, что мой файл в spec / support загружается, но по какой-то причине определенные let / методы недоступны в группе примеров с использованием тег метаданных общего контекста. Что я делаю не так?