मैं टेस्ट संचालित विकास सीख रहा हूं और मॉकिंग के लिए एमओसी लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं। मॉक क्लास की सेटअप विधि का उद्देश्य क्या है?नकली वस्तुओं - सेटअप विधि - टेस्ट संचालित विकास
उत्तर
सेटअप विधि नकली वस्तु पर अपेक्षाएं निर्धारित करने के उदाहरण के लिए प्रयोग किया जाता है:
mock.Setup(foo => foo.DoSomething("ping")).Returns(true);
यहाँ आप नकली वस्तु पर DoSomething
विधि की स्थापना कर रहे हैं। आप कह रहे हैं, जब पैरामीटर "पिंग" होता है, तो विधि सही होती है।
अब यह ऑब्जेक्ट आपके उपयोग के आधार पर एक नकली या स्टब के रूप में कार्य कर सकता है। यदि आप इसे राज्य आधारित परीक्षण में उपयोग करना चाहते हैं, तो यह एक स्टब के रूप में कार्य कर सकता है। यदि आप व्यवहार आधारित परीक्षण में इसका उपयोग करना चाहते हैं, तो यह एक नकली के रूप में कार्य कर सकता है। व्यवहार परीक्षण में, आप नकली वस्तु पर विधि की पुष्टि कॉल करेंगे बात पर जोर देना है कि विधि "पिंग" पैरामीटर के साथ
इसके अलावा उल्लेख इन कड़ियों बुलाया गया था:
एक Moq Mock
ऑब्जेक्ट का डिफ़ॉल्ट व्यवहार सभी विधियों और गुणों को स्टब करना है। इसका अर्थ यह है कि किसी भी पैरामीटर के साथ उस विधि/प्रॉपर्टी पर कॉल विफल नहीं होगा और विशेष रिटर्न प्रकार के लिए डिफ़ॉल्ट मान वापस कर देगा।
- आप विधि के लिए इनपुट मानों को प्रतिबंधित करना चाहते:
आप किसी भी या निम्न कारणों से सभी के लिए
Setup
विधि कॉल।
public interface ICalculator {
int Sum(int val1, val2);
}
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
3 //value of 3
));
ऊपर सेटअप val1
के लिए किसी भी मूल्य के साथ विधि Sum
के लिए एक कॉल और के 3.
- आप एक विशिष्ट मूल्य वापस करना चाहते
val2
मूल्य से मेल खाएगी।ICalculator
उदाहरण के अनुसार, निम्नलिखित सेटअप परवाह किए बिना 10 में मान प्रदान करेगा इनपुट पैरामीटर की:
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
It.IsAny<int>() //Any value
)).Returns(10);
- आप आप सेट अप के बाद
Mock<T>.VerifyAll()
उपयोग करने के लिए सत्यापित करें कि सभी पिछले सेटअप बुलाया गया है चाहता हूँ (एक बार)।
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
7, //value of 7
3 //value of 3
));
mock.Setup(m=>m.Sum(
5, //value of 5
3 //value of 3
));
mock.VerifyAll();
ऊपर कोड पुष्टि करता है कि Sum
दो बार कहा जाता है। एक बार (7,3)
और (5,3)
के साथ।
मुझे एहसास नहीं हुआ कि कोई भी कई अलग-अलग पैरामीटर सेट अप करने के लिए बस एक से अधिक बार सेटअप() को कॉल कर सकता है, और यह एकमात्र ऐसा स्थान है जिसे मैंने देखा है। –