每次更换工厂时,我需要将我的Guardfile(在带有RSpec和FactoryGirl的Rails应用程序中)放入我的所有工厂?
我知道可以根据这个问题运行所有模型规范:Using guard-rspec with factory-girl-rails,但我只想将它们全部丢弃。
我尝试在Guardfile中执行此操作,但这还不够:
watch(%r{^spec/factories/(.+)\.rb$}) {
FactoryGirl.lint
}
提前致谢。
答案 0 :(得分:1)
很清楚你想做什么,但不会那样。
Guard不会在应用程序内“运行”。它运行RSpec作为一个过程。在Guard中调用FactoryGirl.lint
,而不是在RSpec过程中调用(这是你想要的)。
这里的“技巧”是创建一个“假的”spec文件,除了linting之外什么都不做,所以你可以这样做:
guard :rspec do
watch(%r{^spec/factories/(.+)\.rb$}) { 'spec/linting_spec.rb' }
end
以下是它的工作原理:
rspec spec/linting_spec.rb
。因此,只要rspec spec/linting_spec.rb
按照您的意愿运作,您就可以像上面那样将其“插入”保护。
spec/linting_spec.rb
只能对模型进行一次“伪造的”RSpec测试 - 足以触发掉落。
这样你就可以获得linting - 并且不进行任何模型测试。