这与我之前关于黄瓜可选参数的问题有关。如何在该步骤中判断它是否被该for email address..
位调用?
(我知道在我的具体情况下,我可以检查是否email = default@domain.com
存在 args.count 或更通用的方法来告诉步骤调用了哪些参数?)
我认为您可以推断出该信息的唯一方法是检查参数的值。如果值为 nil,则没有为其分配任何内容(即未使用步骤定义的那部分)。
例如,如果您希望行为取决于是否使用了电子邮件地址部分:
When /^I check the favorite color count(?: for email address (.*))?$/ do |email|
if email.nil?
# Then the "for email address" part was *not* used
else
# Then the "for email address" part was used
end
email ||= "default@domain.com"
puts 'using ' + email
end
请注意,这基本上就是该行email ||= "default@domain.com"
正在做的事情。||=
基本上意味着如果一个值不存在,则分配这个值。这与执行以下操作相同:
When /^I check the favorite color count(?: for email address (.*))?$/ do |email|
if email.nil?
# Then the "for email address" part was *not* used
email = "default@domain.com"
else
# Then the "for email address" part was used
# email already has a value so leave it be
end
puts 'using ' + email
end