Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何立即与警卫和工厂女工一起清理工厂?_Ruby On Rails_Rspec_Factory Bot_Guard - Fatal编程技术网

Ruby on rails 如何立即与警卫和工厂女工一起清理工厂?

Ruby on rails 如何立即与警卫和工厂女工一起清理工厂?,ruby-on-rails,rspec,factory-bot,guard,Ruby On Rails,Rspec,Factory Bot,Guard,每次我更换工厂时,我需要在Guardfile(在带有RSpec和FactoryGirl的Rails应用程序中)中放入什么来清除我所有的工厂 我知道,根据这个问题,可以运行所有模型规范,但我只想将它们全部删除 我试图在Guardfile中这样做,但这还不够: watch(%r{^spec/factories/(.+)\.rb$}) { FactoryGirl.lint } 提前谢谢。你想做什么很清楚,但那样不行 Guard不在应用程序的“内部”运行。它将RSpec作为一个进程运行。调用Fac

每次我更换工厂时,我需要在Guardfile(在带有RSpec和FactoryGirl的Rails应用程序中)中放入什么来清除我所有的工厂

我知道,根据这个问题,可以运行所有模型规范,但我只想将它们全部删除

我试图在Guardfile中这样做,但这还不够:

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

提前谢谢。

你想做什么很清楚,但那样不行

Guard不在应用程序的“内部”运行。它将RSpec作为一个进程运行。调用
FactoryGirl.lint
是在Guard中调用的,而不是在RSpec进程中调用的(这是您想要的)

这里的“诀窍”是创建一个“假”规范文件,该文件除了线纹之外什么都不做,因此您可以执行以下操作:

guard :rspec do
  watch(%r{^spec/factories/(.+)\.rb$}) { 'spec/linting_spec.rb' }
end
下面是它的工作原理:

  • 每当工厂文件发生更改时,Guard都会启动带有“spec/linting_spec.rb”的Guard::RSpec(或任何您命名的名称)
  • 守卫::RSpec只调用
    RSpec spec/linting\u spec.rb
  • 所以只要
    rspec spec/linting_spec.rb
    按照您的意愿工作,您就可以像上面那样将其“插入”到防护装置中

    spec/linting_spec.rb
    可以对模型进行一次“假”RSpec测试-足以触发linting


    这样,您就只需使用linting,而无需运行任何模型测试。

    我直接输入
    linting\u spec.rb
    代码来对其进行lint(
    FactoryGirl.lint
    )。非常感谢。