0

Cucumber 代表验收测试框架。因此 Cucumber 中的 BDD 假定使用控制器和视图。

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

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

4

1 回答 1

2

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,将焦点传递回外部循环。当然,您可以增强它以对正在运行的功能进行更细粒度的控制,但这在很大程度上取决于您的功能/规范文件和目录的正确命名模式。

于 2013-03-14T12:40:59.847 回答