将参数传递给ruby calabash方法的更好方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将参数传递给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

虽然看起来很清楚,但我很确定我可以从设计角度做得更好。特别是我不喜欢的是具有true / false赋值的login_type case方法。如何做到这一点更好?谢谢

答案

您可以使用三元运算符赋值:

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案件应该永远不会发生。

以上是关于将参数传递给ruby calabash方法的更好方法的主要内容,如果未能解决你的问题,请参考以下文章

C#将方法作为参数传递给另一个方法[重复]

如何将参数传递给 PhoneGap 数据库事务函数

如何将不同的构建参数传递给一个解决方案的项目

将活动上下文传递给片段内的getLastLocation的更好方法

如何从文件中将文本读入ruby中的数组

Joomla 2.5:将参数传递给联系表格