使用guard自動跑Rspec測試
最近開始撰寫測試,我使用的套件是Rspec,每次測試時免不了都要打Rspec
指令。
但是工程師就是要開始培養懶惰
的美德,
經過大大介紹後,發現可以使用guard這個ruby套件,幫我們每週省下好多時間。
此篇文章的目的是想補充文件內容不足的部分,讓大家更容易安裝及使用guard!
Step 1. 在檔案夾內新增Gemfile
大部分網路上的解說都是把guard用於跑Rails專案的測試, 但其實一般只想測試自己的ruby code也可以唷!
首先,在你想要進行測試的資料夾新增一個Gemfile
source 'https://rubygems.org'
gem 'rspec'
gem 'guard'
gem 'guard-rspec', '4.7.3'
我們需要安裝的gem有rspec
、guard
和guard-rspec
。
寫完Gemfile之後,bundle install
更新套件相依性
Step 2. bundle exec guard init
此步驟是讓guard
能夠產生一個Guardfile
的ruby檔。
接著我們來編輯 Guardfile
:
guard watch 的路徑需要配合自己的需求做修改
例如:我的測試資料夾的結構如下(使用tree
套件查詢):
master ● tree
.
├── Gemfile
├── Gemfile.lock
├── Guardfile
├── atm.rb
├── spec
│ └── atm_spec.rb
└── tmp
一般慣例會把放測試資料的檔案夾命名為spec
,在guard
裡watch
的spec檔案路徑就是^spec/.+_spec.rb
guard :rspec, cmd: "bundle exec rspec" do
watch(%r{^spec/.+_spec.rb$})
watch(%r{(.+).rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
end
提醒一下,Rspec
引入需要被測試的檔案時,可以使用相對路徑。
require_relative '../atm.rb'
RSpec.describe ATM do
# 實作內容
end
Step 3. bundle exec guard
master ● bundle exec guard
11:05:14 - INFO - Guard::RSpec is running
11:05:14 - INFO - Guard is now watching at '/Users/tingtinghsu/Documents/projects/astro_ruby.html/codewar'
以後只要更改原始的檔案,Guard
就會幫我們自動跑測試了,是不是很省事!每天可以提早下班啦~
17:21:38 - INFO - Running: spec/atm_spec.rb
......
Finished in 0.00396 seconds (files took 0.17085 seconds to load)
6 examples, 0 failures
參考資料
ERROR - Could not load ‘guard/rspec’ or’ ‘ find class Guard::Rspec