我的情景如下:
如果我运行这个场景,它将执行所有5个步骤。但是我想跳过第4步(然后我应该看到文本)并执行第5步。
请给我你的建议。提前致谢。 :)
答案 0 :(得分:12)
TL; DR - 不要这样做 - 你(可能)弄错了。你不能(轻松)做到这一点。正如Aslak所写(黄瓜主要创作者之一):
步骤可以产生以下结果:
- undefined(没有匹配的stepdef)
- pending(抛出PendingException的匹配stepdef)
- 传递(匹配的stepdef,不抛出任何东西)
- 失败(抛出异常而非PendingException的匹配stepdef)
- 跳过(在抛出任何异常的步骤之后的步骤(未定义,未决或失败))
你所要求的是一种新的结果 - 被忽略了。它可能是 通过抛出IgnoredException来实现。这意味着 跳过必须更改为:(步骤之后的步骤 抛出任何异常(未定义,未决或失败) - 除非 异常是IgnoredException)
我不确定我喜欢这个。听起来比这更复杂 需要是。你已经掌握了必要的信息 是不对的 - 你的步骤要么失败要么待定。我没看到 继续执行以下步骤的价值。你仍然需要 实施失败/待决步骤。
只要你被提醒“这里有工作要做”我 不要认为这会让Cucumber复杂化,告诉你是什么样的 工作需要做......
Aslak
整个讨论在这里:http://comments.gmane.org/gmane.comp.programming.tools.cucumber/10146
答案 1 :(得分:5)
我必须根据环境有条件地跳过步骤。我使用next
跳过了步骤。这是一个如何做你想做的事的例子。
Then /^I should see the text/$ do
next if @environment == 'no text'
...
<The actual step definition>
...
end