8

我正在添加一个 rspec 钩子,它允许我打开 vcr 并将当前示例的名称用作磁带名称。

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]

它应该返回组和示例名称,连接成一个字符串。

于 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 回答