При использовании RSpec для проверки глубоко вложенных структур данных я нахожу необходимость определять темы в вложенных контекстах в терминах субъектов в контекстах содержания. Я широко рассмотрел, но не нашел примеров того, как обойтись без определения многих переменных. Это усложняет спецификации и ограничивает возможность повторного использования спецификации. Мне любопытно, есть ли способ сделать это в RSpec в том виде, в каком он стоит, и если нет, то что бы было хорошим способом подойти к проблеме.
Сейчас мой код выглядит примерно так:
context 'with a result which is a Hash' do
before do
@result = get_result()
end
subject { @result }
it { should be_a Hash }
context 'with an Array' do
before do
@array_elem = @result[special_key]
end
subject { @array_elem }
it { should be_an Array }
context 'that contains a Hash' do
before do
@nested_hash = ...
end
subject { @nested_hash }
...
end
end
end
Вместо этого я лучше напишу что-нибудь по строкам:
context 'with a result which is a Hash' do
subject { get_result }
it { should be_a Hash }
context 'with an Array' do
subject { parent_subject[special_key] }
it { should be_an Array }
context 'that contains a Hash' do
subject { do_something_with(parent_subject) }
...
end
end
end
Какой способ расширить RSpec с помощью этого типа автоматического управления иерархией объектов?