Sha256: 5554cf96d9a12a795e1d805e6217c993ed3c9e11652ebf2efce8593b763ed77e
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
module VCR # Provides integration with Cucumber using tags. class CucumberTags class << self # @private def tags @tags.dup end # @private def add_tag(tag) @tags << tag end end @tags = [] # @private def initialize(main_object) @main_object = main_object end # Adds `Before` and `After` cucumber hooks for the named tags that # will cause a VCR cassette to be used for scenarios with matching tags. # # @param [Array<String>] tag_names the cucumber scenario tags # @param [(optional) Hash] options the cassette options. Specify # `:use_scenario_name => true` to automatically name the # cassette according to the scenario name. def tags(*tag_names) original_options = tag_names.last.is_a?(::Hash) ? tag_names.pop : {} tag_names.each do |tag_name| tag_name = "@#{tag_name}" unless tag_name =~ /\A@/ # It would be nice to use an Around hook here, but # cucumber has a bug: background steps do not run # within an around hook. # https://gist.github.com/652968 @main_object.Before(tag_name) do |scenario| options = original_options.dup cassette_name = if options.delete(:use_scenario_name) "#{scenario.feature.name.split("\n").first}/#{scenario.name}" else "cucumber_tags/#{tag_name.gsub(/\A@/, '')}" end VCR.insert_cassette(cassette_name, options) end @main_object.After(tag_name) do VCR.eject_cassette end self.class.add_tag(tag_name) end end alias :tag :tags end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
vcr-2.2.4 | lib/vcr/test_frameworks/cucumber.rb |
vcr-2.2.3 | lib/vcr/test_frameworks/cucumber.rb |
vcr-2.2.2 | lib/vcr/test_frameworks/cucumber.rb |