Ответ 1
В RSpec 2.0 вы можете использовать (я не уверен, что это лучший способ, но он работает)
x.example.metadata[:example_group][:full_description]
Что касается RSpec 1.X, я не знаю. И это, вероятно, то, о чем вы просите...
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
Можно ли получить все тестовое имя с тем, что он описывает, (a.k.a. "Hello World должно быть круто" ) в переднем блоке?
В RSpec 2.0 вы можете использовать (я не уверен, что это лучший способ, но он работает)
x.example.metadata[:example_group][:full_description]
Что касается RSpec 1.X, я не знаю. И это, вероятно, то, о чем вы просите...
Я нашел ответ. Оказалось, что раньше использовался метод full_description на x, который бы сделал именно то, что я хочу, однако он устарел. Следующее создает строку, которую я хочу:
"#{x.class.description} #{x.description}"
С 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
или вы можете напрямую использовать методы:
x.example.description
x.example.file_path
и др.
С последней версией rspec начиная с (04/01/2014) это изменилось на
example.metadata[:description]
Оформить покупку https://github.com/rspec/rspec-core#metadata для получения дополнительной информации
on rspec 2.12.0 "#{x.class.description} #{x.example.description}"
работает
Вы также можете получить файл. Я использовал это, чтобы отслеживать проблемы с моими полтергейстскими спецификациями:
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 [ "Пользователь редактирует профиль" ]
Это работает в rspec 3.5
example.metadata[:full_description]
Более полный пример того, как получить к нему доступ:
subject(:example_description) do |example|
example.metadata[:full_description]
end