【问题标题】:Guard-cucumber: watch on view and controller related to featureGuard-cucumber:查看与功能相关的视图和控制器
【发布时间】:2013-02-28 13:59:56
【问题描述】:

Cucumber 代表验收测试框架。所以 Cucumber 中的 BDD 假设使用控制器和视图。

但令人惊讶的是,如果控制器或视图文件(与此功能相关)已更改,guard-cucumber 不提供运行功能的方法。

可以标记功能和场景。在这种情况下如何使用控制器命名的标签?

【问题讨论】:

    标签: ruby-on-rails cucumber guard


    【解决方案1】:

    BDD 的理念是从外向内推动开发,这意味着您从用 Cucumber 从外部描述功能开始。从外部看,您对软件的内部运作一无所知,因此您对 Cucumber 中的控制器或查看文件一无所知。要从外部与应用程序通信,请使用提供的接口,例如CLI 界面或 Web 界面。给定一个 Web 界面,您可以通过浏览 Web 来描述外部:导航到 url,按下链接和按钮,填写表格并通过查看网页来验证结果。

    在 BDD 周期中,您从外部描述功能,但要实现它,您需要进入内部,在那里您使用 RSpec 等另一个测试框架来推动您的开发。在内部循环中工作时,您编写模型、控制器和视图测试来驱动您的实现,当内部测试循环和外部测试循环都为绿色时,您已经成功实现了您的功能。

    Guard::RSpec 和 Guard::Cucumber 没有为由外而内的开发提供开箱即用的实现,但您可以使用 Guard API 来实现它:

    guard :rspec do 
      # ... your normal rspec guard config goes here
    
      # run cucumber after rspec passes
      callback(:run_all_end) do
        unless Guard.guards(:rspec).last_failed
          Guard.run_all({ :guard => Guard.guards(:cucumber) })
        end
      end
    end
    

    当所有 RSpec 规范为绿色时,此粘合代码会触发 Cucumber,将焦点传递回外部循环。当然,您可以对其进行增强,以对正在运行的功能进行更细粒度的控制,但这在很大程度上取决于您的功能/规范文件和目录的正确命名架构。

    【讨论】:

    • 感谢您的回答。在通过控制器规范后运行黄瓜功能听起来很合理。我一定会试试的。但如果我不使用视图规格。我认为黄瓜足以证明我的观点
    • 看起来只有特征命名模式可以处理它
    • @Darkside 同意,我也没有查看规范,我提到它们只是为了完整性:) 正确的功能和规范命名对于运行细粒度规范至关重要。
    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 2018-03-31
    • 2022-01-21
    • 2016-10-06
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多