Website logo

Robert Chang

技術部落格

RSpec - 初始化的資料夾剖析

利用 Command line 來創建 RSpec 資料夾

一樣打開終端機並確認在你想要的路徑( 桌面等等… )

$ mkdir learn-rspec
$ cd learn-rspec
$ rspec --init
  create .rspec
  create spec/spec_helper.rb

這邊指令是先創建一個資料夾 ( learn-rspec ) 並且進入裡面,然後下達 rspec --init 的指令。

rpsec --init 這個指令的目的就在於幫你初始化這個資料夾,並且幫助建立起基本的執行檔以及設定檔

這時候能夠透過昨天下載好的 VSCode 來打開這個資料夾 ( VSCode 的使用非常直覺,所以就不介紹了 )

.rspec 的作用

剛剛做完 rspec --init 後,原本空空的資料夾多了一些東西,如果有仔細看終端機的話,應該會提早發現!

先介紹 .rspec 這個執行檔的功能,點開檔案後會看到 --require spec_helper

screen shot

這個指令是什麼意思呢?

每一次下達測試的指令之前,不論是要測試一小個方法,或是一個完整的功能 其都會確保在所有動作之前去讀取 spec_helper.rb 這個檔案,確保所有的設定都會被成功執行!

spec_helper.rb

這個檔案的是整個 RSpec 的設定檔,裡面有許多的敘述以及設定,這邊就大致的講述,以及示範各種設定的效果!

這個頁面的上半部都是屬於註解的敘述,這個檔案會在剛剛提到的 .rspec 執行檔的設定下,保證被讀取。

記得確保這個檔案保持輕量,避免測試讀取的時間過久,效率變低!

screen shot

還記得前幾天提過的 RSpec 生態圈嗎?

這邊可以根據不同的 Gem 去做設定,前幾天也提過 RSpec 可以在 rspec-expections 以及 rspec-mocks 加入不同的函式庫做結合!

紅色框框處就是設定 rspec-expections 的地方,這時候一定會不知道如何設定,也不知道有什麼語法可以用~

推薦一個叫做 Rubydoc.info 的網站,裡面存放著各式各樣的 Gem 的語法,以及設定,需要什麼樣的 arguments 甚至是 Github 的連接都幫你建立好了,只需要找你想要的資料即可!

整個搜尋的流程會是:

rspec -> rspec-expections -> 點擊 configuration

接著映入眼簾的是:

screen shot

這邊會是官方提供的 API 讓你去設定的文件,內容都描述的蠻詳細的!

不論想要改顏色,設定語法等等,滾動到下方都有更範例或是連結,非常實用。

所以同理,綠色框框的則是 rspec-mocks 的設定檔,依循著同樣的邏輯,也可以找到屬於 mocks 的 API!

從 50 行開始,就是一些和 Gem 不相關的設定,比較像是使用的體驗,或是一些特殊的小功能!

screen shot

在紅色框框處,能看到它會對某一種設定進行說明,以及用法!

往後的每一個區塊都會是 RSpec 推薦給我們的設定,可以斟酌使用,這邊就示範一下加入紅色框框處的設定會長什麼樣子!

  1. 首先,打開註解,找一個地方放,不要放到其他 Gem 的設定裡面!
screen shot
  1. 根據敘述隨意的做一個測試檔案,看看效果;從敘述中得知,這是一個可以過濾一些 example 的功能,只要加上 f 的前綴就可以
screen shot
  1. 得到結論,加了 f 前綴的會被留下並測試,沒有加上 f 的會被過濾掉,雖然這個功能有點雞肋,目前想不到用在哪,因為 RSpec 可以單個 example 做測試,之後會教;但這邊主要想傳達閱讀文件,自己手動試試看的感覺!

其他的部分就給有興趣的人自己玩玩看~

Out Put 的效果

RSpec 的 Out Put 有分成預設以及稍微正式一點的模式

在上面的範例中,有在 command line 後方加入 --format doc 的指令,就是為了讓格式看起來有被箝套的效果,這樣方便我能夠輕鬆的了解哪個 example 是在哪裡 context 之下

這邊聽不懂 example context 等等,很正常,我們馬上就會學到

放上圖片讓大家看一下預設以及箝套效果的不同:

預設版本 ( 只有綠燈 ):

screen shot

箝套版本 ( 包含敘述的結構 ):

test-configure 是最外層 would be focus and test 是被測試的範例的敘述

screen shot

現在教大家如何改變自己的 Out Put 效果,然後不使用 command line。

還記得 spec_helper.rb 是拿來設定整個 RSpec 的檔案嗎?仔細看的話,會找到關於文字格式的敘述,也就是改變的 Out Put 效果!

spec_helper.rb 中加入這一行 ( 其實就在下面,可以複製上來用就好 )

screen shot

接著就算不加入 --formate doc 也可以直接印出易懂的 Out Put 效果!

結語

今天帶大家認識了基本的 RSpec 檔案結構,以及裡面的東西是什麼?該去哪裡找文件等等!

現在已經對於 RSpec 有最初步的認識了,明天將會談談什麼測試驅動開發,以及其對於 RSpec 的價值在哪裡?

上一篇文章RSpec - 安裝以及環境設定

下一篇文章RSpec - TDD 測試驅動開發