RSpec 是什麼?
- 是一款在 2005 年釋出的開放原始碼的測試函式庫
- 最熱門的 Ruby Gem 之一,超過 5 億的下載量
- 最近的一次版本是 RSpec 3,在 2014 年釋出
- RSpec 是一種 DSL
領域特定語言(英語:domain-specific language、DSL)指的是專注於某個應用程式領域的計算機語言 RSpec 的語言是專注在測試方面,同時也是為了測試而存在 DSL 舉例: HTML VimScript 等等
為什麼要測試程式碼?
- 增加新功能時避免產生故障
- 新增功能時,只要根據原先的測試規格下去跑,就能知道結果
- 提供規格給整個應用程式當做文件閱讀
- 有些複雜的應用程式,程式碼被模組化四散各地,這時候閱讀測試文件能夠快速掌握重點以及引用的模組
- 單獨處理某些問題或是 Bug
- 測試的重點就是一次只測試一個方法或是簡單的功能 (Unit Test)
- 提升程式碼品質,尤其在設計方面
- 後面會提到測試、開發、重構的循環,擁有測試的時候,你才有重構的勇氣
- 縮短開發時程
- 測試文件若在開發前期就有穩固的基礎,你只需要確認程式碼能通過測試,基本上就有一定的穩定性
RSpec 的生態系
RSpec 本身包含了三種獨立的 Ruby Gem,下載 RSpec 就會包在一起
- RSpec core
- 核心的函式庫,負責組織和執行測試的部分
- RSpec expections
- 配對語法 ( matcher ) 的函式庫,負責實現例子
- RSpec mocks
- 一個用來假裝物件或類別行為的函式庫
RSpec 本身也可以和其他函式庫的 mocks & expections 整合
Rspec-rails 則是整合了 Ruby on Rails 和 RSpec 而衍生出來的一個 Gem
專案中的資料架構
- 都會看到一個
spec
的資料夾中存放所有測試的檔 - 在裡面會看到類似模仿專案架構的資料名稱
- RSpec 的檔案都會以
_spec.rb
當做結尾,讓測試時能夠找到他 - 舉例:一個
User
Class 就會有一個user_spec.rb
的檔案在spec
資料夾裡面
結語
今天非常簡單的介紹了 RSpec 這個測試框架,也可以當作整個 2021 鐵人賽的小目錄。
基本上都會以上面提過的東西去做延伸,後面會加入一些範例的程式碼來做舉例,希望可以讓不熟悉 RSpec 的人能夠對於這個測試框架有所理解和幫助!
明天將會介紹測試的種類,因為一個龐大的應用程式對於測試的分類也有所不同,這樣才能將執行的效率大幅提升!