rspec hook中当前示例/组的名称

时间:2011-03-06 19:01:29

标签: rspec filter hook rspec2 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不起作用)。

2 个答案:

答案 0 :(得分:13)

RSpec定义了一个metadata方法,该方法返回一个哈希,其中包含有关该示例的一些有用信息。你可以试试:

example.metadata[:full_description]

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

答案 1 :(得分: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