一個簡單的 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
塊。