使用guard-rspec与factory-girl-rails
我正在使用factory_girl_rails
替代我的Rails项目中的灯具。 我也使用guard-rspec
自动运行我的规格。 Guard没有接受我对工厂文件所做的更改(例如spec/factories/users.rb
) – 我必须停止保护,然后重新初始化它以获取这些更改。
有哪些选项可以避免这种手动过程?
要添加到您自己的答案:
我限制它运行的内容,因此它不会运行太多:
watch(%r{^spec/factories/(.+)\.rb$}) { "spec/models" }
或包括相关控制人:
watch(%r{^spec/factories/(.+)\.rb$}) { |m| ["spec/models/", "spec/controllers/#{m[1]}_controller_spec.rb"] }
经过一番搜索,我偶然发现了这个要点并提取出来:
watch(%r{^spec/factories/(.+)\.rb$})
根据文档 ,它告诉当前的警卫要注意spec/factories/
中* .rb文件的变化
更多地限制与工厂相关的具体规格,它应该是这样的:
require 'active_support/inflector' watch(%r{^spec/factories/(.+)\.rb$}) do |m| %W{ spec/models/#{m[1].singularize}_spec.rb spec/controllers/#{m[1]}_controller_spec.rb } end
我在我的macbook上使用它,你应该在你的Guardfile中添加这一行
watch(%r{^spec/factories/(.+)\.rb$}) { rspec.spec_dir }
它会自动运行整个specs文件。
如果你设置块的返回值是’spec / models’,它只运行spec / models dir下的specs。
我使用Dir.glob
获取我想要监视的所有文件名的列表。 这适用于嵌套文件夹结构。
require 'active_support/inflector' watch(%r{^spec/factories/(.+)\.rb$}) { |m| [ *Dir.glob("spec/models/#{m[1].singularize}_spec.rb"), *Dir.glob("spec/requests/**/#{m[1]}_spec.rb"), *Dir.glob("spec/controllers/**/#{m[1]}_controller_spec.rb"), ] }