Moq/moq4 — pull request #44 by tkellogg (2013-04-10 17:53:49+00:00)
Title: Added covariant IMock<out T> interface to Mock<T>

I wanted to be able to write test utilities for setting up more complicated
object interactions. I wanted to make a method with this signature:

```csharp
void Method(Mock> serviceMock);
```

that could recieve an object of type `Mock` as a parameter (where
`IFooService` extends `IService`). Since only interfaces and delegates
can be covariant, the raw `Mock` won't work. This pull request lets me use
this method:

```csharp
void Method(IMock> serviceMock);
```

The `IMock` interface exposes only the members where we can still make
`IMock` covariant (i.e. nothing that has `T` in the parameter list).