- RSpec 教程
- RSpec - 主頁
- RSpec - 簡介
- RSpec - 基本語法
- RSpec - 編寫規範
- RSpec - 匹配器
- RSpec - 測試替身
- RSpec - 存根
- RSpec - 掛鉤
- RSpec - 標記
- RSpec - 主題
- RSpec - 輔助工具
- RSpec - 元資料
- RSpec - 篩選
- RSpec - 期望
- RSpec 資源
- RSpec - 快速指南
- RSpec - 有用的資源
- RSpec - 討論
RSpec - 輔助工具
有時,你的 RSpec 示例需要一種簡單的方法來共享可重用的程式碼。實現這一目標的最佳方法是使用輔助工具。輔助工具基本上是你可以跨多個示例共享的常規 Ruby 方法。為了說明使用輔助工具的好處,我們來考慮一下這段程式碼 −
class Dog
attr_reader :good_dog, :has_been_walked
def initialize(good_or_not)
@good_dog = good_or_not
@has_been_walked = false
end
def walk_dog
@has_been_walked = true
end
end
describe Dog do
it 'should be able to create and walk a good dog' do
dog = Dog.new(true)
dog.walk_dog
expect(dog.good_dog).to be true
expect(dog.has_been_walked).to be true
end
it 'should be able to create and walk a bad dog' do
dog = Dog.new(false)
dog.walk_dog
expect(dog.good_dog).to be false
expect(dog.has_been_walked).to be true
end
end
這段程式碼很清晰,但儘可能減少重複的程式碼始終是一個好建議。我們可以使用名為 create_and_walk_dog() 的輔助方法來獲取以上程式碼並減少其中的某些重複項。
class Dog
attr_reader :good_dog, :has_been_walked
def initialize(good_or_not)
@good_dog = good_or_not
@has_been_walked = false
end
def walk_dog
@has_been_walked = true
end
end
describe Dog do
def create_and_walk_dog(good_or_bad)
dog = Dog.new(good_or_bad)
dog.walk_dog
return dog
end
it 'should be able to create and walk a good dog' do
dog = create_and_walk_dog(true)
expect(dog.good_dog).to be true
expect(dog.has_been_walked).to be true
end
it 'should be able to create and walk a bad dog' do
dog = create_and_walk_dog(false)
expect(dog.good_dog).to be false
expect(dog.has_been_walked).to be true
end
end
當你執行以上程式碼時,你將會看到以下輸出 −
.. Finished in 0.002 seconds (files took 0.11401 seconds to load) 2 examples, 0 failures
正如你所看到的,我們能夠將建立和遛狗物件新增到一個輔助工具中,這樣一來,我們的示例就會更簡短並且清晰。
廣告