将参数传递给 ruby calabash 方法的更好方法
Better way to pass parameters to ruby calabash method
我有以下 ruby 葫芦步骤:
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 带有 true/false 赋值的 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 葫芦步骤:
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 带有 true/false 赋值的 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
情况就永远不会发生。