本節書摘來自異步社群《cucumber:行為驅動開發指南》一書中的第2章,第2.7節,作者:【英】matt wynne , 【挪】aslak hellesy著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
繼續遵照cucumber的訓示,我們需要為電腦程式建立一個ruby檔案。讓我們暫時先建立一個空的ruby檔案,這樣在轉入解決方案之前,我們可以繼續停留在外部并完成測試。linux/mac使用者可以用如下指令建立空檔案:
<code>$ touch calc.rb</code>
如果用的是windows,就無法使用touch指令了,可以用編輯器建立一個名為calc.rb的空文本檔案,或者使用如下技巧:
<code>c:\> echo .> calc.rb</code>
當我們再次運作cucumber的時候,就可以看到第二個步驟通過了,并且運作到了最後一個步驟:
要讓最後一個步驟定義生效,将 features/step_definitions_calculator_ steps.rb中最後的步驟定義修改如下:
我們使用rspec1斷言來檢查特性中指定的期望輸出與前一個步驟定義中用@output存儲的程式輸出是否比對。如果不比對,rspec會産生一個錯誤,就像我們在上一個步驟定義中使用raise一樣。
現在再次運作cucumber,我們就會得到一個真正失敗的測試:
非常好!現在我們的測試失敗得合情合理了:它運作我們的程式,檢查輸出,然後告訴我們正确的輸出應該是怎樣的。到現在該暫停工作,休息一下了。我們已經為這個版本完成了不少艱苦的工作:一會兒等我們回來看代碼的時候,cucumber會準确地告訴我們要使程式正确運作還需要做哪些工作。要是我們所有的需求都像這樣伴随着一個失敗的測試交到我們面前,建構軟體将會變得多麼簡單!
嘗試一下
你能寫一個讓場景通過的calc.rb實作嗎?記住,在目前階段,我們隻需滿足一個單獨的場景,是以,一個非常簡單的方案就能解決該問題。