2011-03-06 36 views
8

我添加了一个rspec钩子,它允许我打开vcr并使用当前示例的名称作为磁带名称。rspec hook中当前示例/组的名称

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不起作用)。

回答

13

RSpec的定义metadata方法返回一个哈希有关的例子一些有用的信息。您可以尝试:

example.metadata[:full_description] 

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

+0

是的,这是一个更好的方法。事实证明,我的解决方案对我来说效果更好(我喜欢用目录结构进行描述),但这是原始问题的最佳答案。 – opsb 2011-03-08 07:22:37

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