gpt4 book ai didi

ruby-on-rails - 使用现有软件组件的行为驱动开发

转载 作者:行者123 更新时间:2023-12-04 05:56:25 26 4
gpt4 key购买 nike

我目前正在通读 The Rspec Book 的测试版:http://www.pragprog.com/titles/achbd/the-rspec-book

它将行为驱动开发周期(红色、绿色、重构)描述为在开发过程中采取的小步骤。这意味着一次添加一个功能。

我的问题是:

如果我要描述我的软件的单个功能(例如: cucumber 测试中的成功用户登录场景)并且我正在使用具有许多功能(场景)的模块化组件(例如 Devise)。我怎么可能遵循行为驱动技术?一旦我的第一步通过,我必须对我的其他测试进行逆向工程以反射(reflect)我正在使用的软件组件的功能,这违反了 BDD 的原则!

编辑(为清楚起见):

我的第一个场景是在实现 Devise 之后通过。但是现在我必须考虑所有后续的端到端测试(我还没有编写)围绕 Devise 的行为而不是利益相关者的要求。所以BDD循环不能再适用了。我必须在我的测试中对 Devise 进行逆向工程,以使它们通过或不编写测试。

最佳答案

BDD 周期涉及创建场景,然后围绕这些场景进行对话以发现更多缺失的内容、任何误解等。

如果您使用像 Cucumber 这样的 BDD 工具,那么您可以捕获您讨论过的场景。

理想情况下,场景将按照高级步骤进行,侧重于系统的功能及其为用户提供的值(value)。它们与登录或身份验证失败无关。

BDD 与测试无关。这是关于学习,让事情容易改变。如果您永远不会更改登录机制,那么手动验证身份验证就足够了。而是专注于使您的应用程序与其他所有应用程序不同的事物。您的软件实际上如何提供值(value)?它如何与其他系统、应用程序和用户通信?如何赚钱、挽救生命或获得乐趣?

如果您可以回答这些问题并将步骤集中在这些问题上,即使使用 Devise,您仍然会遇到失败的情况。您的场景看起来更像:

Given I have registered an account
When I <do this differentiating thing>
Then I <achieve this differentiating outcome>

登录将是隐式的,并作为第一个 Given 的一部分作为较低级别的步骤调用。

关于ruby-on-rails - 使用现有软件组件的行为驱动开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911058/

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