ruby-on-rails - 如何将警卫配置为仅执行与更改内容相关的测试与重新运行整个测试套件?
问题描述
在了解“守卫”(我使用的是 Gem 版本 2.14.2)并阅读此内容后,https: //www.chrisblunt.com/ruby-on-rails-running-tests-with-guard-and-docker/ ,我很好奇我是否在我的 rspec 测试中正确使用了防护。在我使用启动守卫控制台后
bundle exec guard
我正在寻找一种方法,以便在我只编辑一个文件时不会运行我的整个 rspec 测试套件。是否可以配置守卫,使守卫仅针对特定规范运行测试?例如,如果我编辑文件
lib/folder1/myclass.rb
和规格文件
spec/lib/folder1/myclass_spec.rb
对 lib/folder1/myclass.rb 的更改不会导致整个测试套件运行,而只会导致 spec/lib/folder1/myclass_spec.rb 或至少只有依赖于更改后的类的规范?
解决方案
鉴于我的 Gemfile 中有合适的宝石,
gem 'guard', '~> 2.16.2'
gem 'guard-rspec', '~> 4.7.3'
我有一个 Guardfile,
然后假设我只想在文件更改spec/policies/user_policy_spec.rb
时运行app/policies/user_policy.rb
文件,然后我将以下防护添加到我的 Guardfile。
guard :rspec, cmd: "bundle exec rspec" do
watch(%r{^app/policies/(.+)\.rb$}) { |m| "spec/policies/#{m[1]}_spec.rb" }
end
推荐阅读
- javascript - 减少 React 表单验证中的 if 数量
- powershell - 所有 AD 用户的 Powershell 删除
- amazon-web-services - Terraform 错误:运行 terraform init 时模块的无关标签
- jquery - require.js 和 jquery UI 小部件的淘汰赛可排序问题
- azure - Azure:从应用服务访问 Key Vault 时,如何解决“策略要求调用者'...'使用代表 (OBO) 流”?
- mysql - MySQL:将单行显示为列(简单地说,通过 SELECT)
- amazon-web-services - 可以将哪些选项传递给 AWS Glue DynamicFrame.toDF()?
- spring-batch - 读一行写多行
- java - 访问返回栈中立即活动的方法
- r - Shiny 应用程序中的 MathJax 方程在本地渲染,但在部署到 Shinyapps.io 时会中断