2009-06-03 14 views
5

मैं MoqAutoMocker क्लास का उपयोग करने की कोशिश कर रहा हूं जो स्ट्रक्चर मैप के साथ आता है और मुझे इसका कोई उदाहरण नहीं मिल रहा है कि इसका उपयोग कैसे किया जाना चाहिए। मुझे बस example at the StructureMap site that uses RhinoMocks पर जाना है।मैं MoqAutoMocker का उपयोग कैसे करूं जो स्ट्रक्चर मैप 2.5.3 के साथ आता है?

जो मैं करने की कोशिश कर रहा हूं वह गेट विधि का उपयोग करके मेरी ऑटो-मॉक/इंजेक्शन निर्भरताओं में से एक का संदर्भ प्राप्त करता है। इसके बाद के संस्करण है कि लिंक के अनुसार, मैं इस तरह

// This retrieves the mock object for IMockedService 
    autoMocker.Get<IMockedService>().AssertWasCalled(s => s.Go()); 

नोट कैसे आप AssertWasCalled उपयोग कर सकते हैं, जो inidcates प्राप्त समारोह RhinoMocks नकली वस्तु के लिए एक संदर्भ रिटर्न कि कुछ करने के लिए सक्षम होना चाहिए? जब मैं MoqAutoMocker का उपयोग करता हूं तो यह वही कोड मेरे लिए काम नहीं करता है।

मेरे पास एक क्लास साइनइन नियंत्रक है जो कि कन्स्ट्रक्टर में एक ISecurityService पर निर्भर करता है। का उपयोग करते हुए RhinoAutoMocker तरह MoqAutoMocker उदाहरण में प्रयोग किया जाता है, मुझे लगता है कि मैं यह करने के लिए सक्षम होना चाहिए ...

var autoMocker = new MoqAutoMocker<SignInController>(); 
autoMocker.Get<ISecurityService>().Setup(ss => ss.ValidateLogin 
(It.IsAny<string>(), It.IsAny<string>())).Returns(true); 

लेकिन समस्या यह है कि मैं कभी नहीं सेटअप विधि तक पहुँच प्राप्त है। इस मामले में, autoMocker.Get पर कॉल ISecurityService का एक उदाहरण लौटा रहा है और मॉक <ISecurityService>

क्या किसी ने सफलतापूर्वक MoqAutoMocker का उपयोग किया है? क्या मैं बस गलत कर रहा हूँ?

+0

मुझे एक ही समस्या है। क्या आपने यह अंदाजा लगाया ? – Sunit

उत्तर

10

मैंने हाल ही में एक सिमिलर समस्या में भाग लिया। ऐसा लगता है कि समाधान इस तरह कुछ करने के लिए है: Setting Expectations With StructureMap’s MoqAutoMocker:

var autoMocker = new MoqAutoMocker<SignInController>(); 
var mock = autoMocker.Get<ISecurityService>(); 
Mock.Get(mock).Setup(ss => ss.ValidateLogin 
(It.IsAny<string>(), It.IsAny<string>())).Returns(true); 

मैं भी अपने ब्लॉग पर एक lengthier उदाहरण पोस्ट किया है।

+0

आप रॉक। यह मेरे लिए काम किया। जब तक मैंने इसे देखा तब तक मैंने ऑटोमोकर का उपयोग करने के बारे में छोड़ दिया था। धन्यवाद! – JamieGaines

+0

@ जोएल अब्राहमसन - उस ब्लॉग पोस्ट, त्रुटियों के लिए यूआरएल लिंक। –

+0

मैंने इस विषय पर एक [ब्लॉग पोस्ट] (http://evolutionarydeveloper.blogspot.co.uk/2012/10/automock-with-structuremap-and-moq.html) लिखा है जो 'मॉक.गेट' का उपयोग करता है एक आसान बेस क्लास में। – Nick

1

autoMocker.Get<ISecurityService>()
ISecurityService वापस आ जाएगी और आप उस पर सेटअप नहीं कर सकता। इसके विपरीत
Mock.Get(mock)
Moq.Mock वापस कर देगा, तो आप उस पर सेटअप कर सकते हैं।

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