यदि आपको रिटर्न वैल्यू सेट अप करने की आवश्यकता है, साथ ही सत्यापित करें कि अभिव्यक्ति को कितनी बार बुलाया गया था, तो क्या आप इसे एक कथन में कर सकते हैं?Moq - क्या सत्यापित मानदंड सेटअप (उदाहरण के लिए टाइम्स कहा जाता है) में निर्दिष्ट करना संभव है?
जो मैं इकट्ठा कर सकता हूं, मोक के सेटअप (कुछ एक्स्प्रेसियन)। सत्यापित() Verify() के साथ बुलाया जाता है, मूल रूप से एक सत्यापन (SomeExpression, Times.AtLeastOnce) करता है? यानी यह अभिव्यक्ति केवल अभिव्यक्ति कहलाती थी।
प्रश्न को बेहतर तरीके से समझाने के लिए यहां एक उदाहरण दिया गया है। एक इंटरफ़ेस के लिए:
interface IFoo
{
int ReturnSomething();
}
क्या निम्नलिखित दो ब्लॉक समकक्ष हैं (पहले के अलावा सभी सेटअप सत्यापित किए गए सत्यापन के रूप में चिह्नित किए गए हैं)?
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1).Verifiable();
mock.Verify();
}
और
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1);
mock.Verify((m) => m.ReturnSomething(), Times.AtLeastOnce());
}
अगर मैं कॉल की संख्या (जैसे कि दो बार), इस एक ही रास्ता है, जहां अभिव्यक्ति सेटअप के लिए बार-बार और सत्यापित है सत्यापित करने के लिए चाहते थे?
void Test()
{
var mock = new Mock<IFoo>();
mock.Setup((m) => m.ReturnSomething()).Returns(1);
mock.Verify((m) => m.ReturnSomething(), Times.Exactly(2));
}
मुझे बस सेटअप और सत्यापन करने की आवश्यकता नहीं है। खैर, चूंकि यह एएए के लिए एक अच्छा विचार है, फिर से बदलने के लिए, मुझे सेटअप और सत्यापन के लिए अभिव्यक्ति दोहराना पसंद नहीं है। फिलहाल मैं अभिव्यक्ति को एक चर में संग्रहीत करता हूं और इसे प्रत्येक विधि में पास करता हूं, लेकिन इतना साफ महसूस नहीं करता है।
पुनश्च - इस के लिए संदर्भ (निश्वासित आदि) जब एक कैश या अपडेट नहीं होने पर एक परीक्षण जांच के लिए है
यह मोक 4 का उपयोग कर रहा है (मैंने पुराने कोड स्निपेट्स को देखा है जहां आईटेटअप पर एटमोस्टऑन्स जैसे विधियां हैं) – GregS