मान लीजिए मैं निम्नलिखित इकाई है:मजाक Guid.NewGuid()
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public Guid UserGuid { get; set; }
public Guid ConfirmationGuid { get; set; }
}
और निम्नलिखित इंटरफ़ेस विधि:
void CreateUser(string username);
कार्यान्वयन दो नए GUIDs बनाना चाहिए का एक हिस्सा: UserGuid
के लिए एक, और ConfirmationGuid
के लिए दूसरा। उन्हें मूल्यों को Guid.NewGuid()
पर सेट करके ऐसा करना चाहिए।
मैं पहले से ही Guid.NewGuid निकाला है() ऐसे इंटरफेस का इस्तेमाल:
public interface IGuidService
{
Guid NewGuid();
}
तो मैं आसानी से इस नकली कर सकते हैं जब केवल एक नया GUID की जरूरत है। लेकिन मुझे यकीन नहीं है कि एक ही विधि में, एक ही विधि में दो अलग-अलग कॉलों का नकल कैसे करें, जैसे कि वे अलग-अलग मान वापस कर दें।
लेकिन क्या ऐसा नहीं लगता कि मैं एक निश्चित अनुक्रम में कार्यान्वयन में गुणों को स्थापित कर रहा हूं? क्या यह मेरे परीक्षण की चिंताओं को ढंक नहीं रहा है? दूसरे शब्दों में, इन क्षेत्रों को किसी भी क्रम में सेट किया जा सकता है, और अगर किसी कारण से मैं अपने परीक्षणों को अपडेट किए बिना इस आदेश को बदलता हूं, तो मेरे परीक्षण आदर्श रूप से पास हो सकते हैं। –
अच्छा ... आप राज्य बनाम व्यवहार परीक्षण में थोड़ा सा हो रहे हैं। मुझे यकीन नहीं है कि कॉल ऑर्डर के बारे में ज्ञान धारण किए बिना प्रश्न का उत्तर कैसे दिया जाए। –
यदि मैं सही ढंग से समझता हूं, तो आप 'Assert.AreEqual (guid1, user.UserGuid) नहीं चाहते हैं; Assert.AreEqual (guid2, user.ConfirmationGuid); यदि आप असाइनमेंट का ऑर्डर बदलते हैं तो असफल हो जाते हैं। इसके बजाए आपको कुछ प्रकार के संग्रह आवेषण का उपयोग करना चाहिए जो ऑर्डर से स्वतंत्र है (नूनिट और एमस्टेस्ट दोनों में उपलब्ध है): 'CollectionAssert.AreEquivalent (नया [] {guid1, guid2}, नया [] {user.UserGuid, user.ConfirmationGuid}) ; –