在RSpec循环中有条件地应用标签

时间:2019-04-13 01:07:56

标签: ruby testing rspec tags conditional

我有一个以.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 个答案:

答案 0 :(得分: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