如何借助Guard在模型变更时触发FactoryBot工厂规格测试?
嘿,我来帮你搞定Guardfile的配置,让你的FactoryBot工厂测试能在模型变更时自动跑起来!
配置步骤
你只需要在现有的Guardfile里添加一段针对模型文件的监听规则就行,具体操作如下:
基础配置(仅触发工厂测试)
把这段代码加到你的Guardfile中:
# 监听模型文件变更,自动运行FactoryBot工厂测试 watch(rails.models) do |m| rspec.spec.call("factories_spec.rb") end
配置说明
watch(rails.models):Guard提供的便捷方法,会自动监听app/models目录下所有的Ruby文件(包括子目录里的文件)。rspec.spec.call("factories_spec.rb"):指定当模型文件变更时,要运行的测试文件就是你写的spec/factories_spec.rb。
进阶配置(同时触发模型单元测试+工厂测试)
如果你希望修改模型时,既跑对应模型的单元测试,又验证工厂的有效性,可以用这个配置:
watch(rails.models) do |m| # 提取模型名称(比如从"users"得到"user") model_name = m[1].singularize [ # 运行对应模型的单元测试 rspec.spec.call("models/#{model_name}_spec.rb"), # 运行工厂测试 rspec.spec.call("factories_spec.rb") ] end
验证配置
添加完代码后,重启Guard(如果它已经在后台运行的话),然后随便修改一个模型文件(比如app/models/user.rb),你就能看到Guard自动触发对应的测试运行啦!
内容的提问来源于stack exchange,提问作者Carl Edwards
相关产品推荐
相关产品推荐

