所以,我开始构建一个新的应用程序,这是我从.net开始的第一个大型应用程序。
我真的想要BDD整个应用程序,所以我已准备好黄瓜并准备好了。
我已经编写了更多关于简单内容(删除,添加,更新)的测试等等,但现在我不知道如何测试这个场景。
我有这些模特 用户,帐户,计划 每个帐户都有一个计划,计划每个月都会计费(在帐户创建的同一天)。
我想测试选择计划,创建帐户,检查结算流程(即使是模拟,此时没有PayPal)。
我很感激这方面的帮助,只是为了强调,我不是在寻找完整的代码,只是解释一下(在概念上)你会如何进行测试。
此外,计划是可升级和降级的,所以我也想测试它。
提前感谢您的帮助
答案 0 :(得分:3)
我喜欢在外部开发中练习,我们首先编写验收测试,然后进入单元测试来处理域逻辑。我们以创建一个帐户为例。
首先为所需功能编写一个Cucumber故事。例如:
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应用程序中没有定义根路由。一旦我们解决了这个问题,我们就需要一个控制器,视图和视图中的文本。到目前为止,我们只编写过Cucumber测试。
一旦所有这些功能都通过,我们就会意识到需要用户名。我们可以编写一个Cucumber步骤来测试这个案例:
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