2009-07-01 26 views
7

मेरे पास एक ऑब्जेक्ट परीक्षण है जो डेटा एक्सेस ऑब्जेक्ट पर काफी जटिल कॉल करता है। आईटी की तरहassertWas rhino mocks में कॉल किया गया

object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)

दिखता अपने परीक्षण संरचना में मैं वस्तु का एक मज़ाक उड़ाया संस्करण है और मैं परीक्षण करने के लिए है कि DoSomething == "मान 1" और someObject.porpertyA "मान 2" == somestring के साथ बुलाया गया चाहते हैं।

मैं सरल AssertWasCalled() अधिभार का उपयोग नहीं कर सकता क्योंकि मुझे कुछ अन्य ऑब्जेक्ट के बारे में पता नहीं है (या परवाह है)। मुझे एक और अधिभार दिखाई देता है जो सेटअप बाधाओं के लिए एक कार्रवाई करता है, लेकिन मैंने इसे कभी नहीं देखा है।

उत्तर

18

टुकड़ा:

yourstub.AssertWasCalled(
      x => x.DoSomething(
       Arg<string>.Is.Equal("value1"), 
       Arg<someObjectType>.Is.Equal(value2), 
       Arg<someOtherObjectType>.Is.Anything, <======== NOTE THIS! 
       Arg<someOtherOtherObjectType>.Is.Equal(value3) 
      ) 
); 
+4

thaat काम करता है greaat। एकमात्र अन्य चीज़ जो मुझे उपयोगी साबित हुई वह Arg .Matches (y => y.property == जो कुछ भी) का उपयोग करना था; तर्क वस्तुओं पर मूल्यों की जांच के लिए। – captncraig

+0

हाँ, मुझे पता है कि, सादगी के लिए, बस नहीं दिखाया गया। का आनंद लें! – zvolkov

4

documentation for constraints पर एक नज़र डालें।

मुझे लगता है आप चाहते हैं: केक का

Expect.Call(object.DoSomething(null, null, null, null) 
     .IgnoreArguments() // Ignore those nulls 
     .Constraints(Is.Equal("value1"), 
        Property.Value("PropertyA", "value2"), 
        Is.Anything(), 
        Is.Anything()) 
     .Return(whateverItShouldReturn); 
संबंधित मुद्दे