2016-04-27 46 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')。謝謝。 –