RSpec學習筆記1:測試環境設定

RSpec學習筆記1:測試環境設定

最近在做18銅人的時候有個步驟是要寫E2E測試,

之前上課雖然有教過RSpec,

但還是不太熟練,

藉這個機會買了老師推薦的“Everyday Rails Testing with RSpec sample application”

(有英文、日文、簡中版,我當然選日文版啦XD)

雖然還沒看完,但是照著步驟一一操作,

真的有比較知道測試該怎麼寫了。

購書頁面也有提供試閱PDF,

本篇及下一篇會簡單寫個大概,強烈建議買書看比較詳細喔!

範例下載

本書提供的範例是個任務管理網頁, 程式碼可在https://github.com/everydayrails/everydayrails-rspec-2017 下載。 如果想要從某個分支開始操作的話,可以從前一個分支的程式碼開始。 例如:

$ git checkout -b my-05-controllers origin/04-factories

要從頭的話,

$ git checkout -b my-02-setup origin/01-untested

雖然作者有提供範例,但他的初衷是希望大家可以應用在自己的專案上!

安裝RSpec

在Gemfile的development, test group加上rspec-rails的gem,

bundle後再輸入:

$ bin/rails generate rspec:install

資料庫

使用Rails預設的sqlite3,

視需求修改config/database.yml。

修改好後,輸入以下指令建立資料庫:

$ bin/rails db:create:all

讓RSpec的測試結果更易讀(非必要)

打開.rspec檔,修改成如下:

--require spec_helper
--format documentation

使用binstub讓測試套件的啟動更快

在Gemfile的development group裡加上spring-commands-rspec套件。

bundle後輸入:

$ bundle exec spring binstub rspec

避免generate時生成不必要的檔案

在config/application.rb的 class Application < Rails::Application裡輸入以下程式碼:

config.generators do |g|
  g.test_framework :rspec,
    fixtures: false, 
    view_specs: false,
    helper_specs: false,
    routing_specs: false
end

書裡都有介紹每一行代表什麼意義,這裡就不贅述。

這樣就完成基礎的測試環境了。

Recent post