#ruby #testing #rspec #tags #conditional
#рубиновый #тестирование #rspec #Теги #условное #ruby
Вопрос:
У меня есть тестовый файл, который начинается с .for_each
цикла. Я хочу применить тег к одному, но не к другому.
Я мог бы скопировать / вставить весь файл целиком, но это очень неэлегантно.
Тест начинается таким образом:
[ "item1_name", "item2_name" ].each do |item|
describe "Test Run on #{ item }" do
Возможно ли это?
Приведенное ниже, очевидно, не сработает, но описывает то, на что я надеюсь:
например:
[ "item1_name", "item2_name" ].each do |item|
if item == 'item1_name'
describe "Test Run on #{ item }", :tag do
else
describe "Test Run on #{ item }", do
end
before :all do
...
end
...
expectations
...
end
Комментарии:
1. Rspec — это просто ruby, поэтому, если ваш синтаксис правильный, он должен работать.
Ответ №1:
Вы могли бы сделать следующее, чтобы условно добавить аргументы для описания:
tags_for_items = {
'item1_name' => [:tag],
'item2_name' => [],
}
tags_for_items.each do |item, tags|
describe "Test Run on #{item}", *tags do
before :all do
...
end
...
expectations
...
end
end