Ruby on rails 使用cucumber测试场景的正确方法(rails 2.3.8)

Ruby on rails 使用cucumber测试场景的正确方法(rails 2.3.8),ruby-on-rails,cucumber,bdd,Ruby On Rails,Cucumber,Bdd,因此,我开始构建一个新的应用程序,这是我从.net迁移到rails后的第一个大型应用程序 我真的很想BDD的整个应用程序,所以我有黄瓜所有设置和准备去 我已经为一些简单的东西(删除、添加、更新)编写了更多的测试,但是现在我一直在尝试如何测试这个场景 我有这些模型 用户、帐户、计划 每个帐户都有一个计划,每个月(在创建帐户的同一天)都可以对计划进行计费 我想测试选择一个计划,创建一个帐户,检查计费过程(即使是模拟的,此时没有PayPal) 我非常感谢您的帮助,只是想强调一下,我不是在寻找完整的代码

因此,我开始构建一个新的应用程序,这是我从.net迁移到rails后的第一个大型应用程序

我真的很想BDD的整个应用程序,所以我有黄瓜所有设置和准备去

我已经为一些简单的东西(删除、添加、更新)编写了更多的测试,但是现在我一直在尝试如何测试这个场景

我有这些模型 用户、帐户、计划 每个帐户都有一个计划,每个月(在创建帐户的同一天)都可以对计划进行计费

我想测试选择一个计划,创建一个帐户,检查计费过程(即使是模拟的,此时没有PayPal)

我非常感谢您的帮助,只是想强调一下,我不是在寻找完整的代码,只是解释一下(在概念上)您将如何进行测试

此外,该计划可以升级和降级,所以我也想测试一下


提前感谢您的帮助

我喜欢在开发中进行外部实践,我们从编写验收测试开始,然后进入单元测试来处理域逻辑。让我们以创建帐户为例

首先为所需的功能编写一个黄瓜故事。例如:

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
命令运行Cucumber特性时,场景中的第一步将失败,因为主页还不存在。为了创造它,我们可以认为它是一个独立的特征。因此,我们可以编写另一个Cucumber特性,如:

  Scenario: Visitor visits the home page
    When I go to the home page
    Then I should see "Welcome to the Website of Awesomeness"
运行此功能,我们将发现Rails应用程序中没有定义根路由。一旦我们解决了这个问题,我们将需要一个控制器、视图和视图中的文本。到目前为止,我们只编写了黄瓜测试

一旦所有这些特性都通过了,我们意识到应该需要用户名。我们可以编写一个Cumber步骤来测试此案例:

  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的内外部实践的信息):

我已经完成了所有这些测试,我说了所有的基础知识,如开户验证和所有其他的都已经实现。这个问题专门针对支付和计划以及月度账单。首先确保在单元测试套件中计算出计划和支付的域逻辑,然后构建一个可访问支付提供商测试服务器的验收测试套件。一个很好的资源可能是翻阅Chargify在其文档中发布的示例场景,并从中得出一些想法: