views:

2654

answers:

7

Where can I find comprehensive documentation for MOQ? I'm just starting with mocking and am having difficulty getting my head around it. I've read through all the links at http://code.google.com/p/moq/wiki/QuickStart but can't seem to find a tutorial or gentle introduction.

I have also looked briefly at Rhino Mocks but found it very confusing.

+3  A: 

Have you watched Introduction to Mocking with Moq?

Bill the Lizard
A: 

Have you read the linked pages at http://code.google.com/p/moq/wiki/QuickStart ? for example this one

Brian J Cardiff
A: 

Yes - I read Stephen Walthers article - very helpful. I also went through the links. I can't seem to watch the video at http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq

Specifically I am trying to determine whether an event was raised from the mocked class. I can't get the example for events on the QuickStarts page to compile. On the google groups, Daniel explained that CreateEventHandler can only handle an event of type EventHandler, but even then I can't get the code to compile.

More specifically I have a class that implements 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 .....
}

How do I mock the class to test whether the PropertyChanged event was fired? I can't rewrite the event to public event EventHandler becuase I get this error:

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'.

Jeremy Holt
A: 

Duh - I'm an idiot - I didn't realize that I had to log in to download the video - watching it now.

Jeremy Holt
A: 

I've just reply you on moq-disc. But in this particular sample you don't need a mock, you just have the class to be tested.

var entity = new Entity();
var propertyRaised = null;
entity.PropertyChanging += (object, e) => {
    propertyRaised = e.PropertyName;
};
entity.Id = 2;

Assert.AreEquals("Id", propertyRaised);
Brian J Cardiff
Thanks so much - I see that I am going to have to go off and read some more about delegates:)
Jeremy Holt
I don't think this actually answers the question; people reading this want to know where the actual documentation can be found. :(
peteski22
+3  A: 

PropertyChangingEventHandler is NOT an EventHandler event, neither an EventHandler<TArgs> one.

So unfortunately it's not supported for now.

kzu
+8  A: 

As well as the wiki and other online resources, there's full documentation in Windows .CHM help-file format included in the Moq binary download linked from the Moq homepage

Dylan Beattie