我喜歡練外而內的發展,我們開始寫驗收測試,然後拖放到單元測試來處理領域邏輯。我們以創建一個帳戶爲例。
首先寫一個黃瓜故事的所需功能。例如:
Feature: Create an account
In order to use the application
As a user
I want to create an account
Scenario: Create an account from home page
Given I am on the home page
When I follow "Sign up"
And I fill in "Username" with "bob"
And I fill in "Password" with "test123"
And I press "Create"
Then I should see "You have successfully signed up! You may now sign in."
當我們運行使用cucumber features
命令我們的黃瓜的特點,在方案的第一步將失敗,因爲主頁尚不存在。爲了創建它,我們可能會認爲它是一個獨立的功能。因此,我們可以這樣寫另一黃瓜特點:
Scenario: Visitor visits the home page
When I go to the home page
Then I should see "Welcome to the Website of Awesomeness"
運行這個功能,我們會發現,有在Rails應用程序中沒有定義根路徑。一旦我們解決了這個問題,我們就需要一個控制器,視圖和視圖中的文本。到目前爲止,我們只寫了黃瓜測試。
一旦所有這些功能都通過,我們認識到應該要求用戶名。我們可以寫一個黃瓜一步來測試這種情況下:
Scenario: Username must be filled out
Given I am on the home page
When I follow "Sign up"
And I fill in "Password" with "test123"
And I press "Create"
Then I should see "Username cannot be blank."
要實現這一點,我們必須添加一個驗證我們的模型,將驗證用戶名列入。 現在我們將下降到單元測試,因爲我們正在修改域邏輯。作爲一般規則,當您修改模型時,應該放入RSpec或Test :: Unit並直接測試該修改。例如,使用RSpec,我們將添加一個規範來確保用戶名必須存在(以及唯一的等)。一旦這個測試通過,我們的方案也應該開始通過。
這很囉嗦,但它應該可以幫助你以非常真實的方式開始練習BDD。有關更多信息,請參閱RSpec手冊(其中包含有關使用Cucumber和RSpec的外部實踐的大量信息):http://www.pragprog.com/titles/achbd/the-rspec-book
我有所有這些測試,我說過所有基本知識,如開設帳戶驗證和所有其餘的已經實施。該問題特別針對付款和計劃以及每月結算。 – KensoDev 2010-12-14 10:05:04
首先確保計劃和付款的域邏輯在您的單元測試套件中得到解決,然後開始構建一個驗證測試套件,以打擊您的付款提供商的測試服務器。一個很好的資源可能是翻閱Chargify在他們的文檔中發佈的示例Cucumber場景並從中提取想法:http://docs.chargify.com/api-migrations#api-migrations-json-create – 2010-12-14 10:13:45