2008-10-23 13 views
53

मुझे MOQ के लिए व्यापक दस्तावेज़ीकरण कहां मिल सकता है? मैं सिर्फ मजाक कर रहा हूं और इसके चारों ओर अपने सिर को पाने में कठिनाई हो रही है। मैंने http://code.google.com/p/moq/wiki/QuickStart पर सभी लिंक पढ़े हैं लेकिन एक ट्यूटोरियल या सौम्य परिचय नहीं मिल रहा है।MOQ दस्तावेज़ कहां है?

मैंने राइनो मोक्स में भी संक्षेप में देखा है लेकिन इसे बहुत भ्रमित पाया है।


हाँ - मैंने स्टीफन वाल्थर लेख पढ़ा - बहुत उपयोगी। मैं भी लिंक के माध्यम से चला गया। मैं http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [टूटा कड़ी]

पर वीडियो देखने के लिए विशेष रूप से मैं यह निर्धारित करने के एक घटना मज़ाक उड़ाया वर्ग से उठाया गया था कोशिश कर रहा हूँ नहीं कर पा रहे। मैं संकलित करने के लिए QuickStarts पृष्ठ पर घटनाओं के लिए उदाहरण नहीं मिल सकता है। Google समूहों पर, डैनियल ने समझाया कि CreateEventHandler केवल EventHandler<TEventArgs> प्रकार की घटना को संभाल सकता है, लेकिन तब भी मुझे संकलन करने के लिए कोड नहीं मिल सकता है।

अधिक विशेष रूप से मेरे पास एक कक्षा है जो INotifyChanged लागू करती है।

public class Entity : INotifyChanged 
{ 
    public event PropertyChangingEventHandler PropertyChanging; 

    public int Id 
     { 
      get {return _id;} 
      set { 
       _id = value; 
       OnPropertyChanged("Id"); 
       } 
     } 

    protected void OnPropertyChanged(string property) 
     { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
etc .....  
} 

मैं कैसे नकली परीक्षण करने के लिए वर्ग चाहे PropertyChanged घटना निकाल दिया गया था करते हैं? मैं public event EventHandler<PropertyChangedEventArgs> को घटना को फिर से लिखने नहीं कर सकता क्योंकि मैं इस त्रुटि मिलती है:

Error 1 'CoreServices.Notifier' does not implement interface member System.ComponentModel.INotifyPropertyChanged.PropertyChanged'. 'CoreServices.Notifier.PropertyChanged' cannot implement 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' because it does not have the matching return type of 'System.ComponentModel.PropertyChangedEventHandler'.

+0

दिखाया गया त्रुटि एक दृश्य स्टूडियो/कंपाइलर बग है। बस बिन फ़ोल्डर से सबकुछ हटाएं और पुनर्निर्माण करें। – CodingBarfield

+0

* मेरे उत्तर में * Moq * के साथ मॉकिंग का परिचय * लिंक है। –

+0

लिंक टूटा हुआ है (दोबारा) – PPC

उत्तर

15

आप Introduction to Mocking with Moq देखा है? यह मोक का उपयोग करने का एक प्रारंभिक अवलोकन है और यह उन लोगों के लिए है जो आम तौर पर मॉकिंग या मोक फ्रेमवर्क के लिए नए हैं।

30

Moq के ताज़ा दस्तावेज़ों अब GitHub विकि पृष्ठ पर उपलब्ध है:

https://github.com/Moq/moq4/wiki/Quickstart

इससे पहले वे गूगल कोड पर थे। विकी और अन्य ऑनलाइन संसाधनों के साथ, में the Moq homepage से जुड़े विंडोज़ .CHM सहायता-फ़ाइल प्रारूप में पूर्ण प्रलेखन है।

+1

नवीनतम (4.0.10827) रिलीज के लिए सीधा लिंक: http://moq.googlecode.com/files/Moq.4.0.10827.Final.zip – vossad01

+0

बहुत विचित्र और मंच विशिष्ट, लेकिन काफी कार्यात्मक! –

+1

उस दस्तावेज़ को कॉल करने के लिए पर्याप्त विवरण नहीं हैं * दस्तावेज * – anatol

1

I am trying to determine whether an event was raised from the mocked class.

क्या आप हैं? या आप यह निर्धारित करने की कोशिश कर रहे हैं कि Id संपत्ति सेट की गई थी या नहीं? याद रखें, डिफ़ॉल्ट रूप से एक नकली का कोई व्यवहार नहीं होता है। यह अधिसूचना घटनाओं को उठा नहीं रहा है।

मुझे क्या करना चाहते हैं:

const int ExpectedId = 123; 
mockEntity.VerifySet(x => x.Id = ExpectedId); 

मतलब यह है कि इकाई की एक अंतरफलक को लागू करता है; एक उदाहरण:

public interface IKeyedEntity 
{ 
    int Id { get; set; } 
} 

जिसके अनुसार, अगर Entity कोई दिलचस्प व्यवहार मैं एक इंटरफेस (INotifyChanged के अलावा अन्य) को लागू है और न ही यह नकली न होता के साथ एक POCO है। एक वास्तविक Entity उदाहरण के साथ परीक्षण करें (बस डेटाबेस का उपयोग न करें)। सेवाओं और जटिल निर्भरताओं के लिए रिजर्व मॉकिंग।

अधिक Moq सुविधाओं के लिए,

Old style imperative mocks vs moq functional specifications और Mock.Of - how to specify behavior? (thread) देखते हैं। मैंने Moq v4 functional specifications का अपना उदाहरण भी पोस्ट किया।