我有这样的场景:
- 鉴于我去这个页面
- 当我输入黄瓜时
- 我点击
- 然后我应该看到文字
- 我不应该看到这条线
如果我运行这个场景,它将执行所有 5 个步骤。但我想跳过第 4 步(然后我应该看到文本)并执行第 5 步。
请给我你的建议。提前致谢。:)
我有这样的场景:
如果我运行这个场景,它将执行所有 5 个步骤。但我想跳过第 4 步(然后我应该看到文本)并执行第 5 步。
请给我你的建议。提前致谢。:)
TL; DR - 不要这样做 - 你(可能)弄错了。而且你不能(容易)做到这一点。正如 Aslak 所写(Cucumber 的主要创造者之一):
一个步骤可以产生以下结果:
- 未定义(没有匹配的 stepdef)
- 待处理(抛出 PendingException 的匹配 stepdef)
- 通过(不抛出任何东西的匹配 stepdef)
- 失败(一个匹配的 stepdef 抛出一个不是 PendingException 的异常)
- 已跳过(引发任何异常(未定义、待处理或失败)的步骤之后的步骤)
您要求的是一种新的结果-被忽略。它可以通过抛出 IgnoredException 来实现。这意味着 skipped 必须更改为:(引发任何异常(未定义、未决或失败)的步骤之后的步骤 - 除非异常是 IgnoredException)
我不确定我喜欢这个。这听起来比它需要的更复杂。您已经掌握了某些问题的必要信息 - 您的步骤将失败或待处理。我看不到继续执行以下步骤的价值。您仍然必须实施失败/待定步骤。
只要提醒你“这里有工作要做”,我认为让 Cucumber 告诉你需要做什么样的工作并不容易......
阿斯拉克
整个讨论在这里:http ://comments.gmane.org/gmane.comp.programming.tools.cucumber/10146
I have had to skip steps conditionally based on environments. I used next
to skip steps. Here is an example on how to do what you wanted.
Then /^I should see the text/$ do
next if @environment == 'no text'
...
<The actual step definition>
...
end