一個簡單的 RSpec 示例
在 greeter.rb 中(無論你的專案在哪裡):
class Greeter
def greet
"Hello, world!"
end
end
在 spec / greeter_spec.rb 中:
require_relative '../greeter.rb'
RSpec.describe Greeter do
describe '#greet' do
it "says hello" do
expect(Greeter.new.greet).to eq("Hello, world!")
end
end
end
所以我們的檔案結構如下:
$ tree .
.
├── greeter.rb
└── spec
└── greeter_spec.rb
1 directory, 2 files
輸出
$rspec greeter_spec.rb
Finished in 0.00063 seconds (files took 0.06514 seconds to load)
1 example, 0 failures
在 RSpec 術語中,檔案是 Greeter 的 spec,而 it 塊是示例。與 expect 的線是一個期望。如果滿足期望,則沒有任何反應並且測試通過。如果不是,則測試失敗。
這個例子還表明 describe 塊可以巢狀,在這種情況下傳達 greet 方法是 Greet 類的一部分。#greet 中的 # 只是一個約定,表明 greet 是一個例項方法(與類方法的’。‘相對)。RSpec 根本不解釋字串,因此你可以使用不同的字串或完全省略 describe 塊。