如何编写用于描述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?