Recyceln Sie die aufgezeichneten VCR-Kassetten in einem ähnlichen Szenario oder sagen Sie VCR, dass Sie eine bestimmte Kassette für ein Szenario verwenden möchten - Ruby, Gurke, VCR

ich muss ein existing Gurken-Feature erweiternmit einigen neuen Szenarien, die ein neues Verhalten abdecken. Im Moment ist das ganze Gurken- / Vcr-Ding so eingerichtet, dass es nach Kassetten mit passendem Szenennamen sucht:

feature bar

@vcr
scenario foo

sucht nach einer aufgenommenen Kassette in ./cassettes/bar/foo.yml. Aber es gibt weitere Szenarien, die es könntenrecyceln Sie die zuvor bespielte Kassette. (Die auch von meiner Seite hinzufügen). Es gibt also einen Ordner, der für jedes Szenario mit der gleichen Kassette aufgefüllt ist, aber nur umbenannt wurde:

feature bar

@vcr
scenario foo

@vcr
scenario foo1

...

@vcr
scenario fooX

So war es ./cassettes/bar/foo.yml, ./cassettes/bar/foo1.yml ... ./cassettes/bar/fooX.yml mit exakt gleichem Inhalt. Was ist der richtige Weg, um es trocken zu bekommen?

Gibt es eine Möglichkeit, die vcr-Kassette explizit zu spezifizieren, etwa so?

  @vcr(:cassette => foo)
scenario fooX

Danke vielmals ;)

Antworten:

0 für die Antwort № 1

Ich habe dieses Problem gelöst, indem ich ein neues Tag für VCR definiert habe:

#./test_helper/vcr.rb
VCR.cucumber_tags do |t|
t.tag "@vcr", use_scenario_name: true
t.tag "@foo"
end

Und dann fügte ich einen Vorher-Nachher-Haken hinzu, der meine gewünschte Kassette lädt:

# ./features/support/env.rb
Before("@foo") do
VCR.insert_cassette("cassettes/bar/foo")
end

After("@foo") do
VCR.eject_cassette
end

Jetzt musste ich einfach mein neues definiertes Tag für ähnliche Szenarien kommentieren:

feature bar

@foo
scenario foo

@foo
scenario foo1

...

@foo
scenario fooX

So, jetzt habe ich nur eine aufgenommene Kassette übrig.


Am beliebtesten