MOQ के साथ सीएएल EventAggregator मजाक

वोट
3

मैं उपयोग कर रहा हूँ कम्पोजिट आवेदन लाइब्रेरी की घटना एग्रीगेटर, और के लिए एक नकली बनाना चाहेंगे IEventAggregator मेरी इकाई परीक्षण में इस्तेमाल के लिए इंटरफेस,।

मैं उपयोग की योजना बना रहा हूँ Moq इस कार्य के लिए, और एक उदाहरण के परीक्षण अब तक इस तरह दिखता है:

var mockEventAggregator = new Mock<IEventAggregator>();
var mockImportantEvent = new Mock<ImportantEvent>();
mockEventAggregator.Setup(e => e.GetEvent<SomeOtherEvent>()).Returns(new Mock<SomeOtherEvent>().Object);
mockEventAggregator.Setup(e => e.GetEvent<SomeThirdEvent>()).Returns(new Mock<SomeThirdEvent>().Object);
// ...
mockEventAggregator.Setup(e => e.GetEvent<ImportantEvent>()).Returns(mockImportantEvent.Object);

mockImportantEvent.Setup(e => e.Publish(It.IsAny<ImportantEventArgs>()));

// ...Actual test...

mockImportantEvent.VerifyAll();

यह ठीक काम करता है, लेकिन मैं जानता हूँ कि चाहते हैं, अगर वहाँ कुछ चालाक रास्ता के लिए एक खाली नकली परिभाषित करने के लिए होने से बचने के लिए है हर घटना से टाइप मेरी कोड सामना कर सकते हैं (SomeOtherEvent, SomeThirdEvent, ...)? मैं निश्चित रूप से एक [TestInitialize] विधि में मेरे सभी घटनाओं इस तरह से निर्धारित कर सकते हैं, लेकिन मैं अगर वहाँ एक अधिक चतुर तरीका है पता करने के लिए चाहते हैं? :-)

12/03/2009 को 15:38
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

मैं इस एक के लिए समाधान नहीं मिला:

var mockEventAggregator = new Mock<IEventAggregator>{ DefaultValue = DefaultValue.Mock };

mockEventAggregator वापसी सभी नेस्ट वस्तुओं के लिए उपहास कर देगा।

18/03/2009 को 10:04
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more