2012-12-21 183 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)' –