RSpec - सहायक
कभी-कभी आपके RSpec उदाहरणों को पुन: प्रयोज्य कोड साझा करने के लिए एक आसान तरीका की आवश्यकता होती है। इसे पूरा करने का सबसे अच्छा तरीका है हेल्पर्स। सहायक मूल रूप से रूबी विधियां हैं जो आप उदाहरणों में साझा करते हैं। सहायकों का उपयोग करने के लाभ को समझने के लिए, आइए इस कोड पर विचार करें -
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
जैसा कि आप देख सकते हैं, हम एक हेल्पर में डॉग ऑब्जेक्ट बनाने और चलने के लिए तर्क को आगे बढ़ाने में सक्षम थे जो हमारे उदाहरणों को छोटा और साफ करने की अनुमति देता है।