In einem RSPECT-Test möchte ich gemeinsame Tests für zwei verschiedene Klassen implementieren, um eine Wiederholung zu vermeiden. Die Tests werden an den Objekten foo
und bar
durchgeführt. Mein Test hat die folgende Struktur:Iterieren über Objekte in einem RSPEX-Testfall
let(:foo) { create(:foo) }
let(:bar) { create(:bar) }
FOOBAR = {
"foo" => foo,
"bar" => bar
}
describe 'POST :id/foobar_type/:foobar_id/do' do
FOOBAR.each do |foobar_type, foobar|
it 'creates something on an foobar' do
end
it 'raises an error if unauthorized' do
end
...
end
end
Dies funktioniert nicht wie erwartet, da foo
und bar
bei der Deklaration von FOOBAR
nicht verfügbar sind. Sie sind nur während eines it
Blocks gültig. Wie kann ich ein solches Testmuster implementieren?
Haben Sie versucht, das gemeinsame Verhalten Funktionalität in Rspec verwenden? – MageeWorld