【发布时间】:2010-10-12 01:13:15
【问题描述】:
我目前正在阅读 The Rspec Book 的测试版:http://www.pragprog.com/titles/achbd/the-rspec-book
它将行为驱动的开发周期(红色、绿色、重构)描述为在开发过程中采取的小步骤。这意味着一次添加一个功能。
我的问题是:
如果我要描述我的软件的单个功能(例如:黄瓜测试中成功的用户登录场景)并且如果我使用具有许多功能(场景)的模块化组件(例如 Devise)。我怎么可能遵循行为驱动技术?一旦我的第一步通过,我必须对我的其他测试进行逆向工程以反映我正在使用的软件组件的功能,从而违反了 BDD 的原则!
编辑(为清楚起见):
我的第一个场景是在实施 Devise 之后通过。但是现在我必须将所有后续的端到端测试(我还没有编写)考虑到 Devise 的行为而不是我的利益相关者的要求。所以BDD循环不能再应用了。我必须在我的测试中对 Devise 进行逆向工程,以使它们通过或不编写测试。
【问题讨论】:
-
我还是没听懂。如果(唯一的)利益相关者对 Devise 的功能不感兴趣,你为什么?如果他或她是,您为什么反对在端到端测试中考虑 Devise?不要挂断订单。你显然有一些代码。认为自己是红色的。重构以使场景和测试通过。有道理还是我完全错过了什么?
-
@user156011 我认为可能是我没有得到它。我会对 Devise 感兴趣,因为使用现有的、可靠的插件比自己构建所有东西要快。
-
对。所以你确实使用Devise,但你从教条中放松了一点。您正在添加大量功能,并且您现有的测试可能会中断。这是好事。当您的测试失败时,可能是因为您添加了设计,然后您可以处理每个失败的示例,以确保它因正确的原因而失败并重写示例以使其通过。有意义吗?
-
但是没有失败的测试。我有所有的绿色测试。但是为了获得良好的测试覆盖率,我必须围绕设计的功能编写所有未来的测试。这似乎适得其反,并没有真正遵循 BDD。你说得对,我应该放松一下:)
标签: ruby-on-rails rspec cucumber bdd devise