Передать необязательный параметр таблицы на шаг огурца (ruby)

У меня есть шаг, который может быть таким:

Then  I 'eat' all food except
   | Bread |

Then  I 'drink' all food except
   | Bread |
   | Milk  |

Then  I 'eat' all food

Некоторые аргументы я решил поместить в таблицу, иначе ее будет сложно читать.

Определение шага в Ruby:

Then(/^I '(eat|drink)' all food(?: except)?$/) do |action, exceptions|
  exceptions = exceptions.raw.flatten.map(&:strip) unless exceptions.nil?

  action == 'eat' ? method1(exceptions: exceptions) : method2(exceptions: exceptions)

Это работает нормально, но не в том случае, когда я не передаю аргумент таблицы («Тогда я «съедаю» всю еду»). Можно ли сделать аргумент таблицы необязательным?


person laechoppe    schedule 08.01.2019    source источник
comment
Похоже, это невозможно: groups.google.com/forum/#!topic/ кексы/1w4h5Afz1Zs   -  person laechoppe    schedule 08.01.2019


Ответы (1)


Я не уверен, что это сработает в огурце, но поскольку это просто рубиновый блок, вы можете попробовать использовать param с splat. Тогда один параметр будет содержать весь список параметров:

Then(/^I '(eat|drink)' all food(?: except)?$/) do |*params|
   # params is an array
   action = params[0]
   exceptions = params[1] # may be nil
   #...
end

Подробнее о значках

person mrzasa    schedule 08.01.2019
comment
спасибо, да просмотрел такие варианты... они все равно не охватывают все случаи... поэтому я просто переписал шаг - person laechoppe; 09.01.2019