用于在子目录中运行单个黄瓜功能的Guardfile?

时间:2011-05-20 18:51:13

标签: ruby-on-rails cucumber guard

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

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

2 个答案:

答案 0 :(得分:4)

Aph,答案就在documentation

  

对你来说非常重要   了解黄瓜是如何得到的   配置,因为它经常是   陌生行为的起源   护黄瓜。

     

黄瓜使用cucumber.yml   定义特定运行的配置文件   配置。当你通过   配置通过:cli选项   但不包括特定的个人资料   用--profile,然后是   默认配置   也使用了个人资料。

     

例如,当你使用的时候   默认的cucumber.yml生成   cucumber-rails,然后是默认值   配置文件强制保护黄瓜   总是运行所有功能,因为它   附加功能文件夹。

     

仅从Guard

配置黄瓜      

如果要配置Cucumber   只保护,然后你应该通过   --no-profile to:cli选项。

因此,传入--no-profile :cli选项现在可以正常工作,而且我的行为正常。

因为没有阅读文档而感到羞耻!

答案 1 :(得分:1)

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

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

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

希望这有帮助。