2011-08-24 9 views
7

कुछ ऑब्जेक्ट्स के लिए मैं डिफ़ॉल्ट स्टब्स बनाना चाहता हूं ताकि सामान्य गुणों में मूल्य हो। लेकिन कुछ मामलों में मैं अपने डिफ़ॉल्ट व्यवहार को ओवरराइड करना चाहता हूं। मेरा सवाल यह है कि, क्या मैं किसी भी तरह से पहले से ही स्टब किए गए मूल्य को ओवरराइट कर सकता हूं?गैंडो मैक्स के साथ दो बार संपत्ति को छीनना

//First I create the default stub with a default value 
var foo = MockRepository.GenerateStub<IFoo>(); 
foo.Stub(x => x.TheValue).Return(1); 

//Somewhere else in the code I override the stubbed value 
foo.Stub(x => x.TheValue).Return(2); 

Assert.AreEqual(2, foo.TheValue); //Fails, since TheValue is 1 
+0

देखें http://stackoverflow.com/questions/770013/rhino-mocks-how-to-clear- पिछली उम्मीदें-ऑन-ए-ऑब्जेक्ट – Ted

उत्तर

0

GenerateStubStub के बजाय Expect और GenerateMock के बजाय का उपयोग करते हुए इस का समाधान होगा:

//First I create the default stub with a default value 
var foo = MockRepository.GenerateMock<IFoo>(); 
foo.Expect(x => x.TheValue).Return(1); 

//Somewhere else in the code I override the stubbed value 
foo.Expect(x => x.TheValue).Return(2); 

Assert.AreEqual(1, foo.TheValue); 
Assert.AreEqual(2, foo.TheValue); 
+3

विधियों के लिए काम नहीं करता है (कम से कम मेरे मामले में जहां मैं 'Arg ' पैरामीटर के रूप में उपयोग करता हूं)। –

+0

शायद आप अपनी विशिष्ट समस्या बताते हुए एक नया प्रश्न बना सकते हैं? – Jeroen

+4

मैंने सोचा कि प्रश्नकर्ता डिफ़ॉल्ट रूप से कई मान सेट करना चाहता था, फिर प्रत्येक परीक्षण के लिए इन मानों में से एक को बदलना है। अर्थात। एक नया मूल्य कतार नहीं, बल्कि इसे बदल रहा है। –

संबंधित मुद्दे