6

我将我的功能组织在子文件夹中,如下所示:

app/
  features/
     users/
       feature1.feature
       feature2.feature

但是每次我保存一个特性时,Guard 都会运行我的所有特性(不仅仅是编辑过的那个)。如何将其更改为仅运行已保存的那个?

这是我的 Cucumber Guardfile:

guard 'cucumber', :cli => "--drb --require features/support --require features/step_definitions" do
  watch(%r{features/.+\.feature})
  watch(%r{features/support/.+})          { 'features' }
  watch(%r{features/step_definitions/(.+)_steps\.rb}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
end
4

2 回答 2

4

Aph,答案就在文档中:

了解 Cucumber 的配置方式非常重要,因为它通常是guard-cucumber 奇怪行为的根源。

Cucumber 使用 cucumber.yml 来定义特定运行配置的配置文件。当您通过 :cli 选项传递配置但不使用 --profile 包含特定配置文件时,也会使用默认配置文件中的配置。

例如,当您使用由 cucumber-rails 生成的默认 cucumber.yml 时,默认配置文件会强制guard-cucumber 始终运行所有功能,因为它附加了 features 文件夹。

仅从 Guard 配置 Cucumber

如果您只想从 Guard 配置 Cucumber,那么您应该将 --no-profile 传递给 :cli 选项。

因此,传递--no-profile:cli选项现在有效,并且我的行为正常。

为我不阅读文档而感到羞耻!

于 2011-05-30T17:59:09.713 回答
1

--no-profile似乎不再需要该标志,而且它导致不会向控制台显示有关运行功能的任何信息(例如,尚未实现的步骤的代码片段),这绝对不是您想要的。

今天要走的路似乎是使用:all_after_pass这样的标志(在你的Guardfile中):

guard 'cucumber', :cli => '--drb', :all_on_start => false, :all_after_pass => false do

希望这可以帮助。

于 2012-06-28T07:44:44.800 回答