前言:什麼是Rspec
RSpec是一套Ruby語言底下的自動化測試框架,主要用於測試程式執行是否符合我們想要的結果,可在實際手動執行之前先讓程式自動進行測試,節省開發和維護的時間。由於RSpec強調其寫法非常口語化,有別於一般的測試語法,又稱BDD(Behaviour driven development)開發框架,意思是開發者可以將RSpec視為一種規格撰寫的說明書。在實際開發之前先將規格寫好,像是說明書一樣,接著再照這份「說明書」進行開發。這也是為何RSpec要將自己的每一個測試單元都稱為「specification」,字面上就是「規格」的意思。
以五倍上課的測試舉例
require 'rails_helper'
RSpec.describe Cart, type: :model do
let(:cart) { Cart.new }
context "基本功能" do
it "可以把商品丟到到購物車裡,然後購物車裡就有東西了" do
cart.add_item 1
expect(cart).not_to be_empty
end
it "如果加了相同種類的商品到購物車裡,購買項目(CartItem)並不會增加,但商品的數量會改變。" do
3.times { cart.add_item 1 }
3.times { cart.add_item 2 }
2.times { cart.add_item 1 }
expect(cart.items.count).to be 2
expect(cart.items.first.quantity).to be 5
end
require 'rails_helper'
是要讓我們可以使用Rails特別為RSpec設計的語法,所以每個spec檔案開頭都要加入這個敘述。def cart
@cart ||= Cart.new
end
參考資料:
寫測試讓你更有信心 Part2
Ruby on Rails 實戰聖經
Rails 使用 RSpec 寫測試:基本說明及安裝篇