Получение полного имени теста RSpec из блока before (: each) - PullRequest
26 голосов
/ 28 сентября 2010

RSpec позволяет получить имя текущего метода тестирования в блоке before (: each), выполнив следующие действия:

Spec::Runner.configure do |config|
  config.before :each do |x|
    x.method_name # returns 'should be cool'
  end
end

Это для теста типа:

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe 'Hello world' do
  it 'should be cool' do
    # test code
  end 
end

Можно ли получить полное имя теста с тем, что оно описывает (например, "Hello World должно быть круто") в блоке before?

Ответы [ 8 ]

24 голосов
/ 29 сентября 2010

В RSpec 2.0 вы можете использовать (я не уверен, что это лучший способ, но он работает)

x.example.metadata[:example_group][:full_description]

Что касается RSpec 1.X, я не знаю. И это, вероятно, то, что вы просите ...

12 голосов
/ 29 сентября 2010

Я нашел ответ. Оказалось, раньше был метод с именем full_description для x, который делал бы именно то, что я хочу, однако это было объявлено устаревшим. Следующее производит строку, которую я хочу:

"#{x.class.description} #{x.description}"

Ссылка

7 голосов
/ 24 июня 2015

С Rspec 3.3 это работает так:

RSpec.configure do |config|
  config.before :example do |x|
    Rails.logger.debug("=== running spec example #{x.metadata[:full_description].inspect}")
  end
end
6 голосов
/ 22 января 2012

или вы можете использовать методы напрямую:

x.example.description
x.example.file_path

и т. Д.

4 голосов
/ 01 апреля 2014

В последней версии rspec на (01.04.2014) это значение изменилось на

example.metadata[:description]

Оформить заказ https://github.com/rspec/rspec-core#metadata для получения дополнительной информации

1 голос
/ 16 апреля 2013

по rspec 2.12.0 "#{x.class.description} #{x.example.description}" работает

0 голосов
/ 23 мая 2019

Это работает в rspec 3.5

example.metadata[:full_description]

Более полный пример того, как получить к нему доступ:

  subject(:example_description) do |example|
    example.metadata[:full_description]
  end
0 голосов
/ 22 августа 2014

Вы также можете получить файл. Я использовал это, чтобы отследить проблемы с моими спецификациями полтергейста:

  config.before(:each, js: true) do |s|
    md = s.example.metadata
    x = md[:example_group]
    Rails.logger.debug "==>>> #{x[:file_path]}:#{x[:line_number]} #{md[:description_args]}"
  end

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

== >>> ./spec/features/editing_profiles_spec.rb:3 ["Пользователь редактирует профиль"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...