在类似场景中回收录制的vcr磁带或告诉vcr使用特定磁带用于场景

时间:2014-01-29 22:20:31

标签: ruby cucumber vcr

我必须扩展一个现有的黄瓜功能,其中一些新的场景涵盖了一些新的行为。目前整个黄瓜/ vcr的东西设置为这样,它将寻找具有匹配方案名称的磁带:

feature bar

  @vcr
  scenario foo

将在./cassettes/bar/foo.yml中查找录制的磁带。但还有其他情况可以回收之前记录的盒式磁带。 (从我这边添加的那些)。因此,每个方案都有一个文件夹膨胀,同一个盒式磁带,但只重命名:

feature bar

  @vcr
  scenario foo

  @vcr
  scenario foo1

  ...

  @vcr
  scenario fooX

./cassettes/bar/foo.yml./cassettes/bar/foo1.yml ... ./cassettes/bar/fooX.yml内容完全相同。让这种干燥的正确方法是什么?

是否有可能明确指定要使用的录像带?

  @vcr(:cassette => foo)
  scenario fooX

非常感谢;)

1 个答案:

答案 0 :(得分:0)

我通过为VCR定义一个新标签解决了这个问题:

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

然后我添加了一个前后钩子,它加载了我想要的盒子:

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

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

所以现在我只需要为类似的场景注释我新定义的标签:

feature bar

  @foo
  scenario foo

  @foo
  scenario foo1

  ...

  @foo
  scenario fooX

所以现在我只剩下一个录制的录音带文件。