Лучший способ передать параметры в метод ruby ​​calabash - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующий шаг ruby ​​calabash:

When(/^I enter (phone number|email)$/) do |method|
login_type = case method
        when 'phone number'
          true
        when 'email'
          false
        else
          raise("#{method} is not supported")
      end
verify_login_page(type: login_type)
aggregator = case method
             when 'phone number'
               Aggregator::PHONE
             when 'email'
               Aggregator::EMAIL
             else
               Aggregator::ALL
           end
get_and_enter_code(aggregator)
end

Даже если это кажется ясным, я почти уверен, что смогу сделать его лучше с точки зрения дизайна.Особенно мне не нравится метод case login_type с присваиванием true / false.Как это лучше сделать?Спасибо

1 Ответ

0 голосов
/ 20 октября 2018

Вы можете использовать троичное назначение оператора:

When(/^I enter (phone number|email)$/) do |method|
  unless  ['phone number', 'email'].include?(method)
    raise "#{method} is not supported"
  else
    login_type = method == 'phone number' ? true : false
  end

  verify_login_page(type: login_type)

  aggregator = login_type ? Aggregator::PHONE : Aggregator::EMAIL

  get_and_enter_code(aggregator)
end

Поскольку вы вызываете исключение, Aggregator::ALL случай никогда не должен возникать.

...