Wenn ich RSpec verwende, um tief verschachtelte Datenstrukturen zu testen, sehe ich die Notwendigkeit, Subjekte in verschachtelten Kontexten in Bezug auf die Subjekte in den enthaltenen Kontexten zu definieren. Ich habe ausgiebig gesucht, aber keine Beispiele dafür gefunden, wie man dies tun kann, ohne viele Variablen zu definieren. Das verkompliziert die Spezifikationen und schränkt die Möglichkeit der Wiederverwendung von Spezifikationen ein. Ich bin neugierig, ob es eine Möglichkeit gibt, dies in RSpec so zu tun, wie es ist, und wenn nicht, was wäre ein guter Weg, um das Problem anzugehen.
Im Moment sieht mein Code etwa so aus:
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
Stattdessen würde ich lieber etwas schreiben, das in etwa so lautet:
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
Wie lässt sich RSpec um diese Art der automatischen Verwaltung der Themenhierarchie erweitern?