gpt4 book ai didi

cucumber - 如何编写声明性 Cucumber 功能来描述 CRUD 操作?

转载 作者:行者123 更新时间:2023-12-02 19:13:50 25 4
gpt4 key购买 nike

我了解 imperative and declarative cucumber steps 之间的区别,但我还没有看到任何现实世界的例子。我总觉得我的功能文件变得太冗长了。

生命周期中的每个步骤似乎都需要有一个 Cucumber 功能:

  • foobars/list_foobars.feature
  • foobars/create_foobar.feature
  • foobars/view_foobar.feature
  • foobars/edit_foobar.feature
  • foobars/delete_foobar.feature

仅在创建功能中,您似乎想要列出可以输入的字段、哪些字段是必需的、输入无效数据时会发生什么等。我不知道有一种声明性的方式来做这个。当然,在后续功能中,您只需说鉴于 foobar 存在,而不是完成创建 foobar 的所有步骤。

在描述应用程序的行为时,您的描述有多详细?您能否提供一些您认为完整的功能文件示例?

最佳答案

我喜欢让 cucumber 测试保持人类可读,所以假设我们有一个使用无效数据编辑 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

我认为这捕获了我们想要从故事中得到的内容,而不必处理要编辑的字段、要提交的按钮等的所有细节。它不会测试所有可能的情况,但这些确实应该通过单元测试进行测试(设置验证的模型测试,以及设置闪存消息的 Controller 测试或正在处理错误的请求测试)。

其他场景类似:

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

有些人希望将有效数据指定为测试本身的一部分,但我个人更喜欢将这些委托(delegate)给步骤定义,以保持场景干净。您只需要一个示例来确保黄金案例有效,因为这并不是测试所有表单字段是否有效的合适位置(如果您指定了每个字段,维护工作将变得令人头疼)。

关于cucumber - 如何编写声明性 Cucumber 功能来描述 CRUD 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17311069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com