如何将guard-rspec映射到多个不同的文件?

时间:2016-08-25 11:02:59

标签: ruby-on-rails rspec guard

说我np.unique

中有controller

我有一系列app/controllers规格,一个用于控制器中的每个动作。如何在观看控制器时告诉guard,不仅要运行request文件,还要运行:

  • spec/controllers/controller_spec.rb

  • spec/requests/controller/index_spec

  • spec/requests/controller/create_spec

  • spec/requests/controller/update_spec

  • spec/requests/controller/delete_spec

更新

在@TheChamps帮助之后,我就这样了。这是这个用例的正确方法吗?

spec/requests/controller/show_spec

2 个答案:

答案 0 :(得分:1)

watch命令非常简单。通过regex,您可以定义要观看的位置和触发的内容。

一个例子

从他们的文档中获取此标准命令:

watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }

第一部分

watch(%r{^app/(.+)\.rb$})

它查找app目录中以.rb结尾的所有文件,并以路径作为参数 - 通过()。如果保存匹配的文件,例如app/models/users.rb,则会将model/users传递给:

{ |m| "spec/#{m[1]}_spec.rb" }

通过插入传递的参数,它会在spec目录中查找要触发的特定文件 - spec/models/user_spec.rb

您的用例

保存控制器文件后,您希望触发位于/requests下的任何文件以及该控制器后名为的子文件夹下的文件。现在你应该能够轻松地理解这个命令,它实现了这一目标。

watch('app/controllers/(.*)_controller.rb') { |m| "spec/requests/#{m}" } 

答案 1 :(得分:-2)

您可以使用guard-rails gem生成$ guard init rails一个带有Rails默认配置的保护清单文件。