पर आधारित फ़ंक्शन रिटर्न सेट अप करने के लिए मुझे एमएसएमक्यू को कॉल करने के लिए एक इंटरफ़ेस का नकल करने की आवश्यकता है, क्या मैं एक एमएसएमक्यू परिदृश्य को अनुकरण करने के लिए एमओक का उपयोग कर सकता हूं कि कतार में 10 संदेश हैं, मैं मजाक करता हूं 10 बार कार्य करें और मैं एक पूर्व परिभाषित वस्तु प्राप्त कर सकता हूं, 11 वें समय मुझे एक अलग वापसी मूल्य (जैसे शून्य) प्राप्त करना चाहिए?एमओक ने बुलाए गए समय
उत्तर
Moq अब एक विस्तार विधिMoq
नाम स्थान आप प्रत्येक विशिष्ट कॉल के लिए एक विशिष्ट वापसी मान परिभाषित कर सकते हैं जिसका मतलब है कि में SetupSequence()
कहा जाता है।
सामान्य विचार यह है कि आप केवल अपनी आवश्यक मूल्यों को चेन करते हैं। पहली कॉल bellow उदाहरण में जो वापस आ जाएगी और दूसरी कॉल जेन वापस आ जाएगी:
customerService
.SetupSequence(s => s.GetCustomerName(It.IsAny<int>()))
.Returns("Joe") //first call
.Returns("Jane"); //second call
कुछ अधिक जानकारी here।
मैं कभी कभी इस तरह के परिदृश्यों के लिए एक सरल काउंटर का उपयोग करें:
int callCounter = 0;
var mock = new Mock<IWhatever>();
mock
.Setup(mock => mock.SomeMethod())
.Returns(() =>
{
if (callCounter++ < 10)
{
// do something
}
else
{
// do something else
}
});
अच्छा समाधान। 'कैलबैक (...)' को जोड़ना भी संभव है जहां इलिप्सिस प्रतिनिधि का प्रतिनिधित्व करता है जो 'कॉलकॉन्टर' और संभवतः अन्य राज्य को संशोधित करता है। –
यह वास्तव में एक बहुत ही शानदार विचार है। – hardywang
आप इसे करने के लिए एक अलग कार्य भी सेट कर सकते हैं। यदि आप चाहें तो आप फ़ंक्शन को पैरामीटर भी पास कर सकते हैं:
_serviceMock.Setup(x => x.SomeMethod(It.IsAny<String>())).Returns((String param) => getTimesCalled(param));
- 1. समय चूंकि JVM ने
- 2. वास्तविक समय में बुलाए गए सभी जावास्क्रिप्ट कार्यों को कैसे देखें?
- 3. राइनोमोक्स - बुलाए गए कार्यों के पैरामीटर प्राप्त करना
- 4. किसी बुलाए गए फ़ाइल को त्रुटि से प्राप्त करना
- 5. ElapsedEventHandler द्वारा बुलाए गए फ़ंक्शन के पैरामीटर कैसे पास करें?
- 6. यूनिट परीक्षण में एमओक का उपयोग कर नकली प्रमाणीकृत उपयोगकर्ता
- 7. क्या "ईएससी" पर रद्द AJAX के माध्यम से बुलाए गए PHP प्रक्रियाएं हैं?
- 8. मैं एंटीटी फ्रेमवर्क 4 द्वारा सेट किए गए ट्रिगर में बुलाए गए RAISERROR द्वारा फेंक दिया गया एसक्यूएलएक्सप्शन कैसे पकड़ूं?
- 9. AJAX के माध्यम से बुलाए गए PHP एन्कोड JSON echo'd वास्तव में क्या देता है?
- 10. आईओएस मुख्य धागे पर निष्पादित प्रतिनिधियों और पर्यवेक्षकों द्वारा बुलाए गए तरीके हैं?
- 11. जावास्क्रिप्ट में नए के साथ बुलाए गए कन्स्ट्रक्टर से नल कैसे वापस करें?
- 12. एनएसथ्रेड के माध्यम से बुलाए गए फ़ंक्शन से वापसी मूल्य कैसे प्राप्त करें?
- 13. मैं $ कैसे सेट करूं? पीएस 1 द्वारा बुलाए गए कार्यों में?
- 14. rspec: कन्स्ट्रक्टर द्वारा बुलाए गए एक इंस्टेंस विधि को कैसे दबाया जाए?
- 15. कोको ऐप में बुलाए गए सभी ओबीजेसी तरीकों को स्थिर रूप से कैसे डंप करें?
- 16. क्यूओब्जेक्ट विनाश के बाद बुलाए गए सिग्नल को क्यों नष्ट कर दिया गया है?
- 17. सी # में बुलाए गए पैरामीटर की पैरामीटर की आईडीआईआर <स्ट्रिंग, ऑब्जेक्ट> कैसे प्राप्त करें?
- 18. रैवेनडीबी ने ट्रैक किए गए परिवर्तनों को ट्रैक किया है
- 19. फ्रैक्टल ने
- 20. क्या संकलन-समय पर बुलाए जाने वाले तरीके को रोकने का कोई तरीका है?
- 21. `pthread_mutex_trylock` ब्लॉक एक ही समय में दो धागे द्वारा बुलाए जाने पर
- 22. जावास्क्रिप्ट में ईवेंट हैंडलर क्रम में बुलाए जाते हैं?
- 23. गिट ने एक रिपॉजिटरी क्लोनिंग करते समय प्रतिलिपि प्रतिलिपि त्रुटि
- 24. डार्ट ने समय स्थिरांक संकलित क्यों किया है?
- 25. उपयोगकर्ता ने libevent
- 26. हम एक बहुप्रचारित सी # विंडोज सेवा अनुप्रयोग से बुलाए गए वीबी 6 डीएल के साथ कैसे काम कर सकते हैं?
- 27. 'एप्लिकेशन ने मेल कंपोज़र
- 28. पीईक्यूटी बटन ने
- 29. त्रुटि 1053: सेवा ने समय-समय पर शुरू या नियंत्रण अनुरोध का जवाब नहीं दिया
- 30. एनएचबीर्नेट ने
यह वही था जो मैं देख रहा था :) कमाल। – Silwing
यह भी बेहतर है! – hardywang
ऐसा लगता है कि लिंक अप्रासंगिक है:/ – reddy