Не удалось заставить shared_contexts работать в rspe c 3.9.0 / rspe c -rails 4 - PullRequest
0 голосов
/ 26 мая 2020

В предыдущих версиях 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 / методы недоступны в группе примеров с использованием тег метаданных общего контекста. Что я делаю не так?

1 Ответ

0 голосов
/ 26 мая 2020
require 'rails_helper'

describe 'something' do
  include_context 'foobar'
  it 'does not seem to be working' do
    puts lol
  end
end
...