Behold! A quick reference guide for Rhino Mocks (AAA syntax) users making the switch to Moq.
| Rhino Mocks | Moq |
|---|---|
| MockRepository.GenerateMock<T> | new Mock<T> |
| MockRepository.GeneratePartialMock<T> | new Mock<T> { CallBase = True } |
| .Stub(…).Return(…) .Stub(…).WhenCalled(…) .Stub(…).Do(…) | .Setup(…).Returns(…) |
| .Expect(…).Return(…) .Expect(…) | .Setup(…).Returns(…).Verifiable() .Setup(…).Verifiable() |
| Arg<T>.Is.Anything | It.IsAny<T>() |
| Arg<T>.Matches(…) | It.Is<T>(…) |
| Arg<T>.Is.Equal(foo) | It.Is<T>(x => x == foo) |
| .AssertWasCalled(…) | .Verify(…) |
| .AssertWasNotCalled(…) | .Verify(…, Times.Never) |
| .VerifyAllExpectations() | .Verify() |
In addition to the syntax translations listed in the table above, a key difference is that you use the instantiated mock object via the mock’s Object property. For example:
var mock = new Mock<SomeClass>();
SomeMethod(mock.Object);