2010-12-14 55 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