मैं इस कोड मिल गया है से ब्लॉक उपज:Rspec Mocks: नकली/एक विधि कॉल
Net::SSH.start(@server, @username, :password => @password) do |ssh|
output = ssh.exec!(@command)
@logger.info 'SSH output: '
@logger.info output
end
मैं इस तरह RSpec के नकली ढांचे का उपयोग कर SSH.Start नकली कर सकते हैं, मुझे बताओ कि मैं है एसएसएच सत्र शुरू किया:
Net::SSH.should_receive(:start).with("server", "user", :password => "secret") do
@started = true
end
यह मुझे बताता है कि मैंने एसएस सत्र को @ प्रारंभ किया है या नहीं। अब मुझे ssh.exec mock करने की जरूरत है! विधि, जो काफी आसान है:
Net::SSH.should_receive(:exec!).with("command")...
लेकिन मैं उस ब्लॉक को कैसे उत्पन्न/कॉल करूं जिसमें ssh.exec है! विधि कॉल, क्योंकि मैंने SSH.start विधि का मज़ाक उड़ाया है? संभवतया कुछ सरल विधि है जिसे मैं इस ब्लॉक को निष्पादित करने के लिए बुला सकता हूं, लेकिन मुझे नहीं पता कि यह क्या है और आरएसपीसी के मॉकिंग फ्रेमवर्क पर वास्तव में कोई अच्छी व्याख्या/दस्तावेज़ीकरण नहीं मिल रहा है।
पता नहीं था कि must_receive के बारे में ... क्या इस सामान पर कोई अच्छा दस्तावेज है? मेरा google-fu मुझे विफल कर रहा है ... भी - अगर मुझे उपजित ब्लॉक के वापसी मूल्य की परवाह नहीं है तो क्या होगा? मैं बस इसे निष्पादित करना चाहता हूं, ताकि मैं ssh.exec पर should_receive को कॉल कर सकूं! तरीका। –
यही है 'must_receive' का अर्थ है: यदि यह प्राप्त नहीं होता है, तो परीक्षण विफल हो जाएगा। जहां तक प्रलेखन, आरएसपीसी बुक उत्कृष्ट है। मैं आरएसपीईसी का उपयोग सीखने और सामान्य रूप से बीडीडी के बारे में सीखने के लिए दोनों की सिफारिश करता हूं। – Avdi
ओह, और आप बिना तर्क के '#and_yield()' को कॉल करने में सक्षम हो सकते हैं। – Avdi