धन्यवाद रूबेन का एक संकलन त्रुटि पैदावार!
Public Interface Xyz
WriteOnly Property AA As String
End Interface
Public Class VerifySyntax
<Fact()>
Public Sub ThisIsHow()
Dim xyz = New Mock(Of Xyz)
xyz.Object.AA = "bb"
' Throws:
xyz.VerifySet(Sub(s) s.AA = It.IsAny(Of String)(), Times.Never())
End Sub
End Class
Public Class SetupSyntax
<Fact()>
Public Sub ThisIsHow()
Dim xyz = New Mock(Of Xyz)
xyz.SetupSet(Sub(s) s.AA = It.IsAny(Of String)()).Throws(New InvalidOperationException())
Assert.Throws(Of InvalidOperationException)(Sub() xyz.Object.AA = "bb")
End Sub
End Class
यहां महत्वपूर्ण यह है कि आप एक एकल लाइन समारोह का उपयोग नहीं कर रहा है:
और एक VB.Net में किसी की सहायता करने के लिए पकड़ लिया इस VB.Net में एक ही कोड है लैम्बडा क्योंकि इसे एक अभिव्यक्ति के रूप में व्याख्या किया जाएगा जो आपके द्वारा किए गए असाइनमेंट स्टेटमेंट के बजाए एक मान देता है। इस के बाद से VB.Net न केवल काम के लिए बल्कि समानता तुलना के लिए एक बराबर के चिह्न का उपयोग करता है, और इसलिए s.AA-मूल्य और की एक बूलियन तुलना के रूप में व्याख्या की जाएगी
xyz.VerifySet(Function(s) s.AA = It.IsAny(Of String)(), Times.Never())
करने का प्रयास कर रहा है It.Isny (स्ट्रिंग का)(), इस प्रकार गेटटर का आह्वान करता है, जो फिर से एक संकलन त्रुटि में परिणाम देगा। इसके बजाय आप उप लैम्ब्डा (या संभवतः एक बहु-पंक्ति फ़ंक्शन लैम्ब्डा) का उपयोग करना चाहते हैं।
यदि आपके पास संपत्ति पर गेटटर है, हालांकि, एक समारोह लैम्ब्डा अभी भी काम करेगा।
स्रोत
2012-04-13 14:22:09
मैं उलझन में हूं, परीक्षण का उद्देश्य क्या है यदि संकलक इस तथ्य को उठाता है कि आप केवल एक लेख लिखने पर गेटर को कॉल करने का प्रयास करते हैं? मुझे यकीन है कि मैं यहां कुछ खो रहा हूं, शायद ओपी से स्पष्टीकरण? –
@ इगोर ज़्वकाका और अन्य: 'देखें => देखें .etOnlyValue' उत्पन्न करता है 'संपत्ति' SetOnlyValue 'कोई गेटर नहीं है'। ऐसा इसलिए है क्योंकि कोड के इस टुकड़े को गेटर के लिए कॉल के रूप में व्याख्या किया जा रहा है। रीड-राइट केस में, 'VerifySet' अभिव्यक्ति चलता है और आंकड़े बताता है कि संपत्ति के सेटटर पर क्या अपेक्षा है। केवल-पढ़ने के मामले में, यह एक कंपाइलर त्रुटि में चलाता है। हमें यह मानने की जरूरत है कि ओपी यहां बेवकूफ नहीं है और खुद के लिए काम करने की कोशिश नहीं कर रहा है और इसके बजाय पूछ रहा है कि 'मैं अतिरिक्त जंक करने से कैसे बचूं'। –
ओह मुझे यह मिल गया। तो यह moq में एक सत्यापन स्थापित करने के बारे में था जो किसी संपत्ति पर भरोसा नहीं करता था, जो कि गेटटर की आवश्यकता है, सही? –