我不知道为什么这这么难。我已经尝试了几种方法,但由于某种原因,这个 Ruby Cucumber 代码要么继续到块中的下一个代码,要么我得到类似"意外返回(LocalJumpError)"的东西。这是显而易见的事情,我找不到答案吗?
我有一个解决方法,只需将所有代码包装在"if 条件 == false"中,但是有更好的方法吗?
When(/^I create scenarios$/) do
if condition == true
#exit, return, next, break ????
end
#code i don't want to execute if condition matches
end
您希望通过使用"下一步"提前退出块。
next if condition
你对你给出的代码示例的问题是,你不想执行的代码不是你的 if 块的一部分。
按照你编写它的方式会发生什么,它会检查 if 条件,然后根据它找到的内容执行。然后,它移动到下一行代码,这是您不想运行的代码。
我的建议是尝试这样的事情,
When(/^I create scenarios$/) do
if condition == true
else
#code i don't want to execute if condition matches
end
end
这里会发生什么,它将检查 if 条件,如果它是真的,代码除了跳过 else 步骤之外什么都不做,因为它满足 if 条件。当它检查 if 条件时,如果它返回 false,那么它将转到 else 步骤,并执行该代码。
我不能保证这是编写此代码的最佳方式,但这很简单,应该足以解决问题
因为如果条件为真,你不希望什么发生,所以我建议在步骤定义中使用unless
。
When(/^I create scenarios$/) do
unless condition == true
#code you want to execute when the condition is false
end
end
如果condition == true
,则流将进入下一步。