8

vcr をオンにして、現在の例の名前をカセット名として使用できるようにする rspec フックを追加しています。

it "should have collaborators", :vcr => :once do
  # web interactions
end

config.around(:each, :vcr => :once) do |example|
  VCR.use_cassette(example.name, :record => :once) do
    example.call
  end
end

問題は、現在の例の名前を取得する方法がわからないことです (example.name は機能しません)。

4

2 に答える 2

13

RSpec はmetadata、例に関するいくつかの有用な情報を含むハッシュを返すメソッドを定義します。あなたは試すことができます:

example.metadata[:full_description]

これは、グループと例の名前を 1 つの文字列に連結して返す必要があります。

于 2011-03-08T02:27:55.307 に答える
1

これは少し面倒に思えますが、仕事はします

  config.before(:each, :vcr => :once) do
    group_descriptions = self.example.example_group.ancestors.map(&:description)
    spec_name = [*group_descriptions.reverse, self.example.description].join("/")
    VCR.insert_cassette(spec_name, :record => :once)
  end

  config.after(:each, :vcr => :once) do
    VCR.eject_cassette
  end
于 2011-03-06T19:42:43.357 に答える