Имя текущего примера / группы в хуке rspec - PullRequest
8 голосов
/ 06 марта 2011

Я добавляю ловушку 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 не работает).

Ответы [ 2 ]

13 голосов
/ 08 марта 2011

RSpec определяет метод metadata, который возвращает хеш с некоторой полезной информацией о примере.Вы можете попробовать:

example.metadata[:full_description]

, который должен возвращать группу (ы) и имя примера, объединенные в одну строку.

1 голос
/ 06 марта 2011

Это кажется немного странным, но это делает работу

  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
...