我會爲此使用Cucumber(但我非常有偏見),我會先從應用程序的核心部分編寫一些場景開始。
一些重要的規則來寫你的場景時遵循
- 使用您的域語言
- 只談你正在做什麼和爲什麼它的重要
- 不要談論你如何做的事情。
因此,你的超級英雄網站,你可以開始考慮你需要做的事情開始。
通常當你發現一個資源(超級英雄),你將有你可以探索一些基本的CRUD操作,所以
- 創造的超級英雄
- 編輯超級英雄
- 刪除超級英雄
- COMPARING一個超級英雄**這是你的關鍵出發點**
讓我們開始工作比較一個超級英雄場景
Given there are superheroes Batman and Superman And I am like Batman When I find my superhero Then I should see I am like Batman
現在讓我們開始實施這一方案。這裏最重要的一點是不要將所有代碼放在步驟定義中。相反,使每個步驟定義調用輔助方法。
注:以下所有的代碼將紅寶石
Given 'there are superheroes Batman and Superman' do create_superhero batman create_superhero superman end
現在我們可以進入BDD紅/綠測試周期。
因此,我們將開始得到這樣的錯誤No method found create_superhero
和undefined constant batman
。我們可以在步驟定義中使用輔助模塊來解決這些問題。
module CreateSuperHeroStepHelper
def create_superhero(attrs={})
Superhero.create(attrs)
end
def batman
{
...
}
end
...
end
而從這段代碼中,我們可以開始處理我們應用程序的域對象。超級英雄。
爲了得到這一步的工作,你必須與你的潛在的Web框架交互。一旦你有它的工作,以最基本的形式,你可以進入下一步。
沿途你將有各種各樣的選擇,你下一步怎麼辦的方法。如果你堅持在這個核心場景中工作,你必須聰明的實現你的實現。如果您決定處理看起來像先決條件的情景,例如用戶帳號,創建超級英雄,輸入你的超級英雄特徵,添加超級英雄特徵。然後,你應該結束了,你可以使用你的核心方案(例如你必須create_superhero
)的工具,但它會需要更長的時間才能到您的應用程序的核心。
沒有必要要考慮的單元測試,層或嘲諷這裏。這就是關於你如何做的事情的低級細節。只要你在你的web框架中有一些基本的能力,你應該開始探索你的域名,並使用BDD創建簡單的工具,你可以用它來探索你的超級英雄世界。
祝你好運
你會使用與API測試相同的場景嗎? – acejazz
有效的是。該API使用集成和單元測試進行測試。其他UI測試也將接觸到的API,如果在制度層面做 – MikeJ