如何安裝
放在 :development, :test
group 裡面,或參考此 commit
參考資料: https://relishapp.com/rspec/rspec-rails/docs
# Gemfile
gem 'rspec-rails', '~> 4.0.0'# 記得要 bundle
接著再終端機輸入,可參考此 commit
rails generate rspec:install# 也可縮寫成
rails g rspec:install
產生範例 spec
由於之前已經透過 scaffold
建立 User
欲透過指令補產生相關測試檔案的話,在終端機輸入以下
rails g rspec:scaffold user
若不透過指令,也可手動新增檔案,或參考此 commit
備註:
- 原本我也不知道要這樣下指令,透過
rails g -h
的技巧,看有哪些參數可以使用 (若不清楚,可以看前面寫的 Linux 指令文章man
、help
、tldr
,非常受用的技巧) - 若已經有先裝 RSpec ,透過 scaffold 產生檔案時,便會一起產生 spec.rb 的相關檔案
如何執行
終端機輸入
# 跑全部的測試
rspec
rspec spec# 跑特定資料夾的測試
rspec spec/routing/# 跑特定檔案的測試
rspec spec/routing/users_routing_spec.rb# 跑特定檔案某一個測試
rspec spec/routing/users_routing_spec.rb:22
如何讓 CI 也能跑 rspec
將原本 CI 設定檔新增以下,可參考此 commit
bundle exec rspec
推薦網站
想提升自己 RSpec 寫法的話,可參考 Better Specs 此網站
小結
測試非常的重要,但也別把測試當萬靈丹,它只能幫忙測出有涵蓋到的情境 (假設測試的情境、準備的答案、寫的測試都是對的),依然無法測出沒想到的情境,未來再修改 code 時,也可能發現原本考量的情境已經變了,這時便需要調整測試本身
測試本身,其實就可以寫成 30 天的文章,自成一個生態圈,且還有許多相關的 Gem 相輔相成,像是 factory_bot、Database Cleaner、timecop、Capybara、SimpleCov、FakeRedis…等,將來有機會再視情況寫成文章…
本篇其實寫的蠻精簡的 XD (逃,下篇會講另一個測試套件 Cucumber
鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10242906
medium 文章連結:https://link.medium.com/M8qWBUbd19
本文同步發布於 小菜的 Blog https://riverye.com/
備註:之後文章修改更新,以個人部落格為主