Передать необязательный параметр таблицы шагу огурца (ruby) - PullRequest
0 голосов
/ 08 января 2019

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

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)

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

1 Ответ

0 голосов
/ 08 января 2019

Я не уверен, будет ли это работать в огурце, но так как это просто блок ruby, вы можете попробовать использовать 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

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

...