2010-12-14 94 views
2

所以,我開始構建一個新的應用程序,這是自從.NET移植到rails之後的第一個大應用程序。用黃瓜測試場景的正確方法(導軌2.3.8)

我真的想要BDD整個應用程序,所以我有黃瓜的所有設置和準備去。

我已經寫了更多,然後幾個測試簡單的東西(刪除,添加,更新)等,但現在我卡住試圖找出如何測試這種情況。

我有這些模型 用戶,帳戶,計劃 每個帳戶都有一個計劃,計劃是每個月(創建帳戶的同一天)計費。

我想測試選擇一個計劃,創建一個帳戶,檢查結算過程(甚至模擬,此時沒有貝寶)。

我將不勝感激幫助,只是爲了強調,我不是在尋找完整的代碼,只是解釋如何(在概念上)你會去和測試這個。

此外,計劃是可升級和降級能力,所以我想測試這一點。

在此先感謝您的幫助

回答

3

我喜歡練外而內的發展,我們開始寫驗收測試,然後拖放到單元測試來處理領域邏輯。我們以創建一個帳戶爲例。

首先寫一個黃瓜故事的所需功能。例如:

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

+0

我有所有這些測試,我說過所有基本知識,如開設帳戶驗證和所有其餘的已經實施。該問題特別針對付款和計劃以及每月結算。 – KensoDev 2010-12-14 10:05:04

+0

首先確保計劃和付款的域邏輯在您的單元測試套件中得到解決,然後開始構建一個驗證測試套件,以打擊您的付款提供商的測試服務器。一個很好的資源可能是翻閱Chargify在他們的文檔中發佈的示例Cucumber場景並從中提取想法:http://docs.chargify.com/api-migrations#api-migrations-json-create – 2010-12-14 10:13:45