如何立即用警卫和工厂女郎给工厂起毛?
How to lint factories immediately with guard and factory girl?
每次更换工厂时,我需要在我的 Guardfile(在 Rails 带有 RSpec 和 FactoryGirl 的应用程序中)添加什么来检查我的所有工厂?
我知道可以 运行 所有模型规范,根据这个问题:Using guard-rspec with factory-girl-rails,但我只想对它们全部进行 lint。
我尝试在 Guardfile 中这样做,但还不够:
watch(%r{^spec/factories/(.+)\.rb$}) {
FactoryGirl.lint
}
提前致谢。
很清楚你想做什么,但那样做是行不通的。
Guard 没有 运行 "within" 应用程序。它 运行s RSpec 作为一个过程。调用 FactoryGirl.lint
是在 Guard 中调用的,而不是在 RSpec 进程中调用的(这是你想要的)。
这里的 "trick" 将创建一个 "fake" spec 文件,除了 linting 之外什么都不做,所以你可以这样做:
guard :rspec do
watch(%r{^spec/factories/(.+)\.rb$}) { 'spec/linting_spec.rb' }
end
工作原理如下:
- 每当工厂文件更改时,Guard 都会启动 Guard::RSpec 并带有 'spec/linting_spec.rb'(或任何您命名的名称)。
- Guard::RSpec 只是调用
rspec spec/linting_spec.rb
.
所以只要 rspec spec/linting_spec.rb
像你想要的那样工作,你就可以像上面那样 "plug" 进入守卫。
spec/linting_spec.rb
可以只对模型进行一次 "fake" RSpec 测试 - 足以触发 linting。
这样你将只有 linting - 而没有 运行任何模型测试。
每次更换工厂时,我需要在我的 Guardfile(在 Rails 带有 RSpec 和 FactoryGirl 的应用程序中)添加什么来检查我的所有工厂?
我知道可以 运行 所有模型规范,根据这个问题:Using guard-rspec with factory-girl-rails,但我只想对它们全部进行 lint。
我尝试在 Guardfile 中这样做,但还不够:
watch(%r{^spec/factories/(.+)\.rb$}) {
FactoryGirl.lint
}
提前致谢。
很清楚你想做什么,但那样做是行不通的。
Guard 没有 运行 "within" 应用程序。它 运行s RSpec 作为一个过程。调用 FactoryGirl.lint
是在 Guard 中调用的,而不是在 RSpec 进程中调用的(这是你想要的)。
这里的 "trick" 将创建一个 "fake" spec 文件,除了 linting 之外什么都不做,所以你可以这样做:
guard :rspec do
watch(%r{^spec/factories/(.+)\.rb$}) { 'spec/linting_spec.rb' }
end
工作原理如下:
- 每当工厂文件更改时,Guard 都会启动 Guard::RSpec 并带有 'spec/linting_spec.rb'(或任何您命名的名称)。
- Guard::RSpec 只是调用
rspec spec/linting_spec.rb
.
所以只要 rspec spec/linting_spec.rb
像你想要的那样工作,你就可以像上面那样 "plug" 进入守卫。
spec/linting_spec.rb
可以只对模型进行一次 "fake" RSpec 测试 - 足以触发 linting。
这样你将只有 linting - 而没有 运行任何模型测试。