【问题标题】:Better way to pass parameters to ruby calabash method将参数传递给ruby calabash方法的更好方法
【发布时间】:2019-03-25 05:59:15
【问题描述】:

我有以下红宝石葫芦步骤:

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

尽管看起来很清楚,但我很确定从设计的角度来看我可以做得更好。特别是我不喜欢的是带有真/假分配的 login_type 案例方法。 怎么做比较好?谢谢

【问题讨论】:

    标签: ruby if-statement case calabash


    【解决方案1】:

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

    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,就永远不会发生这种情况。

    【讨论】:

    • 谢谢!老实说,Aggregator::ALL 是我删除其他代码以在此处放置示例后的人工制品,抱歉造成混淆
    猜你喜欢
    • 2021-07-19
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多