這裏講了如何安裝rspec,安裝使用rspec。html
下面介紹一下rspec中常見的使用方法。sql
下面是一個最簡單的測試用例,判斷true是否是等於true,should_be是舊的用法,新用法推薦使用expect()ruby
it "is true when true" do true.should be_true end
#新用法
it "is true when true" do expect(true).to be_true end
一,測試models中的方法post
1,測試實例方法測試
#spec/models/contact_spec.rb
def name
[firstname, lastname].join(' ')
endui
#spec/models/contact_spec.rb it "returns a contact's full name as a string" do contact = Contact.new(firstname: 'John', lastname: 'Doe', email: 'johndoe@example.com') expect(contact.name).to eq 'John Doe' end
測試相等時,RSpec 推薦使用 eq 而不是 ==。spa
2,測試類方法和做用域code
#spec/models/contact_spec.rb def self.by_letter(letter) where("lastname LIKE ?", "#{letter}%").order(:lastname) end
require 'spec_helper' describe Contact do # earlier validation examples omitted ... it "returns a sorted array of results that match" do smith = Contact.create(firstname: 'John', lastname: 'Smith', email: 'jsmith@example.com'), jones = Contact.create(firstname: 'Tim', lastname: 'Jones', email: 'tjones@example.com'), johnson = Contact.create(firstname: 'John', lastname: 'Johnson', email: 'jjohnson@example.com') expect(Contact.by_letter("J")).to eq [johnson, jones] end end
使用下面代碼來檢測返回值中是否沒有包含聯繫人 smithserver
expect(Contact.by_letter("J")).to_not include smith
3,捕獲異常htm
expect { result = UI::ApplinkSqlBackup.get_sql_server_info(header, input) }.to raise_error(Esfbase::EsfStandardError)
將可能發生異常的代碼寫在expect中,期待返回Esfbase::EsfStandardError類型的error