我喜欢练外而内的发展,我们开始写验收测试,然后拖放到单元测试来处理领域逻辑。我们以创建一个帐户为例。
首先写一个黄瓜故事的所需功能。例如:
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