У меня есть переменная, которая немного дороже. Я хочу использовать его для нескольких примеров для каждой коллекции, как показано ниже:
describe MyModel, type: :model do
describe ".seed" do
before(:example) do
described_class.seed
end
%w{field_1 field_2 field_3 field_4}.each do |field|
let(:dynamic_field) { described_class.find_by_code('Car').dynamic_fields.values.detect {|item| item['field'].eql?(field) } }
it "contains #{field}" do
expect(dynamic_field).to include( "field" => field )
end
it "contains :field_type" do
expect(dynamic_field).to include "field_type_id"
end
end
end
end
Итак, когда field == 'field_1'
, тогда let
должен быть объявлен и использован для двух примеров. Когда field_2
является текущей итерацией, тогда let
должен быть повторно объявлен. К сожалению, если let определен один раз, он останется с тем же значением во всех примерах.
Я пытался использовать before(:example) { @dynamic_field = ... }
, но это было объявлено только для первой итерации.
Итак, как мне повторно использовать переменную в нескольких примерах для текущей итерации массива?