如何编写用于描述CRUD操作的声明式Cucumber功能?
我理解命令性和陈述性黄瓜步骤之间的区别,但我还没有看到任何真实世界的例子。 我总是觉得我的功能文件变得太冗长了。
看起来在生命周期的每一步都需要有一个黄瓜特征:
foobars/list_foobars.feature
foobars/create_foobar.feature
foobars/view_foobar.feature
foobars/edit_foobar.feature
foobars/delete_foobar.feature
在创建功能中,您似乎希望列出可以输入的字段,需要哪些字段,输入无效数据时会发生什么等。我不知道使用声明方式来执行此操作。 当然,在随后的功能中,您只会说Given a foobar exists
而不是完成所有创建步骤。
在描述应用程序的行为时,你有多详细? 你能提供一些你认为可以完成的功能文件的例子吗?
我喜欢让黄瓜测试可读,所以假设我们有一个用无效数据编辑foobar的故事,我想要一个如下的场景:
# foobars/edit_foobar.feature
Feature: As a user, I want to edit a Foobar, so I can Baz
Scenario: Validation Errors
Given I am logged in as a user
And a foobar exists
And I edit the foobar with invalid data
Then I should see validation errors
我认为捕捉到了我们想要的故事,而不必处理所有要编辑的字段的细节,提交哪些按钮等。它不会测试所有可能的情况,但这些应该通过测试单元测试(设置了验证的模型测试,以及设置了Flash消息的控制器测试或请求测试错误的服务)。
其他情况类似:
Scenario: Successful Edit
Given I am logged in as a user
And a foobar exists
And I edit the foobar with valid data
Then I should see the valid data
有些人希望将有效数据指定为测试本身的一部分,但我个人更倾向于将这些数据委托给步骤定义以保持场景清洁。 你只需要一个例子来确保黄金案件的工作,因为这不是一个合适的地方来测试所有的表单字段的工作(如果你指定每一个领域,它将成为一个维护头痛)。
我想也许不会使用Cucumber测试这个,而只是在Feature部分发表评论。
或者,也许可以做这样的事情:
# categories.feature
Scenario: Manage categories
Given I want to manage categories
When I <crud_type> a category
Then I should be taken to the listing page
Examples:
| crud_type |
| create |
| edit |
| delete |
Scenario: View category
Given I want to view a particular category
When I click on a category in the category list
Then I should see that category's view page
链接地址: http://www.djcxy.com/p/14495.html
上一篇: How to write declarative Cucumber features for describing CRUD operations?
下一篇: logical structure/details of a reference variable and object in the memory?