向ruby葫芦方法传递参数的更好方法
我有以下ruby葫芦步骤:向ruby葫芦方法传递参数的更好方法,ruby,if-statement,case,calabash,Ruby,If Statement,Case,Calabash,我有以下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_logi
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_类型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
由于引发异常,因此聚合器::ALL案例永远不会发生。您可以使用三元运算符赋值:
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是在我删除了其他代码并在这里放了一个示例之后的产物,抱歉混淆谢谢!老实说,Aggregator::ALL是我删除了其他代码并在这里放了一个示例之后的产物,很抱歉造成混淆