功能顺序& ruby应用程序中的步骤定义/规格? (导轨)

时间:2013-02-13 21:16:53

标签: ruby-on-rails-3 rspec cucumber bdd

我是铁杆,黄瓜和rspec的新手。为了帮助学习这三个,我已经开始构建一个需要登录的实际应用程序。

我希望得到一些指导,从哪里开始并确认我在正确的道路上。

我从2个功能文件开始。但是,我已经停止了这个阶段,因为我想知道“登录”功能(虽然应用程序的核心方面,因为他们在没有登录的情况下无法做任何事情)应该在其他资产和模型之后,例如他们登录时管理的东西。

那么,哪个会先来?登录的功能或他们管理的模型的功能?

示例功能文件:

Feature: User loads application

  As a user
  I want be able to load the application
  So that I can manage my files

  Scenario: Load application
    Given I am not yet using the application
    When I visit the application
    Then I should see "Welcome to app"

登录功能文件:

Feature: User logs in

  As a user
  I want be able to login
  So that I can manage my private files

  Scenario: Successful login
    Given the user "Username" has an account
    When they login
    Then they should see "You have logged in successfully"

我应该开始使用他们实际用作应用点的功能吗?

1 个答案:

答案 0 :(得分:1)

您实施功能的顺序是业务决策。无论是从登录过程还是其他功能开始,都取决于每个功能所具有的业务价值。

为了帮助您找到从哪里开始,您需要向利益相关者提问。以下是一些例子:

  • 我们可以在没有用户身份验证的情况下构建功能A吗?
  • 此时我们绝对需要用户身份验证吗?
  • 让我们考虑一下我们有资源只构建一个功能,现在最有价值的功能是:登录还是功能A?

在身份验证之前构建功能A 可以是一个很好的策略,因为您将能够公开该功能以测试用户并提前对其进行改进。或者,它对您的特定项目完全没有意义,并且您希望在其他任何事情之前准备好身份验证。

现在,为了评论您的特定场景,您使用的样式非常好。

我有感觉(我可能是wron)用户加载应用程序功能虽然不是很有用。作为用户,您是否关心“欢迎使用应用”消息?这个场景看起来像是一个功能前的设置测试,您希望作为开发人员开始开发过程。但是,对于应用程序的行为,它似乎并没有(我可能错了)。

这可以封装在Cucumber功能背后,描述系统的一些真实预期行为(例如登录过程或将项目添加到购物车或阅读博客帖子,以及与您的域相关的任何内容)。