Question: i got a class that gets by argument a delegate.
This class invokes that delegate, and i want to unit test it with Moq.
how do i verify that this method was called ?

example class :

```
public delegate void Foo(int number);

public class A
{
   int a = 5;

   public A(Foo myFoo)
   {
      myFoo(a);
   }
}

```

and I want to check that Foo was called.
Thank you.

Answer: 
As of [this commit](https://github.com/Moq/moq4/commit/e614ae5b4a14896503b59e2a70ac799bb66e741b) Moq now supports the mocking of delegates, for your situation you would do it like so:

```
var fooMock = new Mock<Foo>();
var a = new A(fooMock.Object);

```

Then you can verify the delegate was invoked:

```
fooMock.Verify(f => f(5), Times.Once);

```

Or:

```
fooMock.Verify(f => f(It.IsAny<int>()), Times.Once);

```
Since Moq doesn't support mocking delegates, I'll usually handle this with something like:

```
var list = new List<int> ();
var del = i => list.Add (i);
var a = new A(del);
list.ShouldContainOnly (new[] { 5 });

```

where the delegate provided performs some simple, verifiable action.