2012-12-21 148 views
6

我有方案,如:如何跳过黄瓜步骤?

  1. 鉴于我去这个页面
  2. 当我键入黄瓜
  3. 我点击
  4. 然后,我应该看到的文字
  5. 我不应该看到该行

如果我运行这个场景它将执行所有5个步骤。但我想跳过第四步(然后我应该看到文本)并执行第五步。

请给我你的建议。提前致谢。 :)

+2

我同意@欧内斯特的答案在下面;你似乎要问的是黄瓜的错误用例。很想知道你为什么要这个功能。 –

+0

感谢您的回复:-)我需要这个功能在我的项目中。我怎样才能继续这种情况?给我你的建议。 – NMKP

回答

12

TL; DR - 不要这样做 - 你(可能)弄错了。你不能(容易地)做到这一点。如Aslak写(黄瓜主创造者之一):

甲步骤可以具有如下的结果:

  • 未定义(无匹配stepdef)
  • 未决(抛出PendingException匹配stepdef)
  • 通过(匹配stepdef不会抛出任何东西)
  • 失败(匹配stepdef抛出一个不是PendingException的异常)
  • 跳过(步下一个工序抛出任何异常(不确定,有待或失败))

什么你问的是一个新的结果 - 被忽略。它可能是 通过抛出IgnoredException实现。这意味着 跳过会被更改为:(一步下一个工序是 抛出任何异常(不确定,有待或失败) - 除非 例外是IgnoredException)

我不知道我喜欢这个。这听起来像它比 需要更复杂。你已经有了必要的信息, 是错误的 - 你的步骤将失败或待定。在继续执行以下步骤中,我看不到 值。您仍然必须 实施失败/暂挂步骤。

只要你提醒的是,“有要在这里完成的作品”我 不认为它wortwhile复杂黄瓜告诉你一种需要的东西的工作 要做......

Aslak

整个讨论是在这里:http://comments.gmane.org/gmane.comp.programming.tools.cucumber/10146

+0

我不知道'等待',这是非常有帮助的。谢谢。 – mvndaai

+0

谢谢老兄,这很有帮助 –

3

我不得不跳过有条件基于环境的步骤。我使用next跳过步骤。这里是一个如何做你想要的例子。

Then /^I should see the text/$ do 
    next if @environment == 'no text' 

    ... 
     <The actual step definition> 
    ... 
end 
+0

请您详细说明一下吗?像我们可以通过在“<实际步骤定义>”部分中定义它来进一步移动?我们如何定义它? –

+0

“下一个”会跳过下面的所有内容,它有点像'返回',这也可能起作用。按照您通常的方式编写步骤,但在步骤的第一行中,如果您不想运行下面的代码,则应创建一个如上所述的“if”语句。 – mvndaai

+0

我不知道它,当我输入'next if'时,它会向我输出一个错误,就像'无效的下一个(SyntaxError)' –