У меня есть несколько наборов rspec, которые включают в себя некоторые общие примеры. Я хотел бы, чтобы эти общие примеры включали другие общие примеры, если исходная спецификация имела некоторый набор переменных. В основном это то, что я пытаюсь сделать.Включить примеры Rspec с переменной
Пример:
файла: spec/test_spec.rb
describe 'some thing' do
let(:some_feature) { true }
describe 'some tests' do
include_examples "shared_tests"
end
end
Файл spec/shared/shared_tests.rb
shared_examples_for "shared_tests" do
include_examples "feature_specific_tests" if some_feature
end
Как и следовало ожидать, это бросает ошибку, как это:
undefined local variable or method `some_feature`
Есть ли способ сделать это? Я думал, возможно, я мог бы определить @some_feature
в блоке before(:all)
, а затем использовать if @some_feature
в shared_examples
, но это всегда nil
.
Хорошо, это имеет смысл. Вопрос скорее похож на то, как использовать только «it_should_behave_like» некоторые тесты «если some_feature», так как переменная находится за пределами ее области – Eugene
справа - см. Нижний блок кода - просто сдвиньте строку let (: some_feature) вниз от того места, где у вас было это в блок, в котором вы пишете свои первые общие примеры, звоните ... сравните блок, который я положил внизу, в исходный блок вверх. Вы просто эффективно передаете правдивое значение через общий набор примеров в блоке, который затем будет доступен во второй группе ... –
Вот документация: https://www.relishapp.com/rspec/rspec -core/v/2-11/docs/example-groups/shared-examples –