2009-06-20 11 views
6
में

अरे लोग ... मेरी मजाक asp.net MVC के साथ हल कर पाने की कोशिश इस Moq कोड देखो।क्या होगा की तरह RhinoMocks

मैं शुद्ध Moq के प्रयोग पर इस उदाहरण मिल गया है, मूल रूप से मैं यह कहना समझ रहा हूँ: जब ApplyAppPathModifier कहा जाता है, मूल्य है कि यह करने के लिए पारित किया गया था वापस जाएँ।

मैं यह पता लगाने नहीं कर सकते कि कैसे राइनो Mocks में ऐसा करने के लिए, किसी भी विचार?

var response = new Mock<HttpResponseBase>(); 
response.Expect(res => res.ApplyAppPathModifier(It.IsAny<string>())) 
      .Returns((string virtualPath) => virtualPath); 
+0

यह वास्तव में काम कर सकते हैं, बस परीक्षण अब ... अपने sods कानून, एक बार आप एक सवाल आप तो का उत्तर नहीं मिलता पोस्ट ... SetupResult की पुष्टि करेगा .For (response.ApplyAppPathModifier (Arg .Is.Anything))। IgnoreArguments() । करें ((Func ) ((arg) => {वापसी तर्क;})); – Keith

उत्तर

3

मैं ऊपर उल्लेख किया है, sods कानून, एक बार आप मदद के लिए पोस्ट आप इसे ढूँढ़ने (यहां तक ​​कि थोड़ी देर के लिए खोज करने के बाद)। वैसे भी दूसरों के लाभ के लिए इस काम करता है:

SetupResult 
    .For<string>(response.ApplyAppPathModifier(Arg<String>.Is.Anything)).IgnoreArguments() 
    .Do((Func<string, string>)((arg) => { return arg; })); 
1

जब तक मैं कोड को गलत तरीके से पढ़ रहा हूं, मुझे लगता है कि आप इसे थोड़ा सा सरल बना सकते हैं। इस प्रयास करें: 5 मिनट के बाद में

var response = MockRepository.GenerateMock<HttpResponseBase>(); 

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
         .IgnoreArguments() 
         .Return(virtualPath); 
+0

@womp, धन्यवाद दोस्त। आपके उदाहरण में वर्चुअलपाथ, मौजूदा चर क्या है? मैं जो कर रहा हूं वो वैरिएबल को वापस करना है जो वास्तव में ApplyAppPathModifier को पास किया गया था। यह रनटाइम तक नहीं पता है। मैं वास्तव में यह, ऊपर मेरी टिप्पणी का उपयोग कर काम करने के लिए और अब यह पोस्ट करेंगे – Keith

+0

आप तर्क ApplyAppPathModifier के लिए पारित किया जानना चाहते हैं आप womp के कोड का उपयोग करें और निम्न पंक्ति जोड़ सकते हैं मिल गया: वर आर्ग = response.GetArgumentsForCallsMadeOn (x = > x.ApplyAppPathModifier (Arg आई। कुछ भी)); –

8

आप ठूंठ विधि का उपयोग कर रहे हैं, तो के रूप में SetupResult विधि करने का विरोध किया है, तो इस के लिए वाक्य रचना के नीचे है:

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
       .Do(new Func<string, string>(s => s)); 
संबंधित मुद्दे