Условное применение тегов в цикле RSpec

#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