2016-04-27 41 views
1

我需要在我的Guardfile中(在带有RSpec和FactoryGirl的Rails应用程序中)每次更换工厂时为我的所有工厂添加皮毛?如何立即用防护装备和工厂女孩甩掉工厂?

我知道这是可以运行所有型号规格,因此对这个问题:Using guard-rspec with factory-girl-rails,但我只想皮棉他们。

我试图做到这一点在Guardfile,但它是不够的:

watch(%r{^spec/factories/(.+)\.rb$}) { 
    FactoryGirl.lint 
} 

在此先感谢。

回答

1

很清楚自己想要做什么,但它不会这样的。

卫队没有“内”的应用程序运行。它运行RSpec作为一个过程。调用FactoryGirl.lint在Guard中调用,而不是在RSpec进程内(这是你想要的)。

的“猫腻”这里是创建一个“假”规范的文件,什么也不做,除了掉毛,所以那么你可以做:

guard :rspec do 
    watch(%r{^spec/factories/(.+)\.rb$}) { 'spec/linting_spec.rb' } 
end 

下面是它如何工作的:

  1. 每当一个工厂文件发生了变化,Guard使用'spec/linting_spec.rb'(或者任何你命名的)来启动Guard :: RSpec。
  2. Guard :: RSpec只需拨打rspec spec/linting_spec.rb

所以只要rspec spec/linting_spec.rb的工作就像你想要的那样,然后你可以像上面那样“插入”那样的防守。

spec/linting_spec.rb可以只有一个“假”的RSpec测试的模型 - 只要足以使掉毛被触发。

这样,你刚才掉毛 - 和不运行任何模型试验。

+0

我把'linting_spec.rb'直接的代码皮棉他们('FactoryGirl.lint')。谢谢。 –