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

问题描述 投票:0回答:1

我有一个以.for_each循环开头的测试文件。我想将标签应用于一个而不是另一个。

我可以复制/粘贴整个文件,但这非常不优雅。

测试从此开始:

[ "item1_name", "item2_name" ].each do |item|
  describe "Test Run on #{ item }" do

可能吗?下面显然不会工作,但描述了我希望的:

e.f.:

[ "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
ruby testing rspec tags conditional
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.