Sometimes, Moq's default behaviors are just enough to proceed with the unit test. In this case, Moq offers utility methods to quickly generate a mocked object using the static factory
Implicit mocks are the most useful when dealing with interfaces that don't need any customization nor verification. Unlike explicitly creating a mock using the
Mock<T> class constructor,
Mock.Of<T> returns directly the mocked type.
var logger = Mock.Of<ILogger>();
The line above is fully equivalent to:
var mock = new Mock<ILogger>();var logger = mock.Object;
Sometimes, it can be useful to access the mock a mocked object. This can be achieved with the
var mock = Mock.Get(logger);
Mock.Get can also be used when accessing the underlying mock of a hierarchy of properties.
var mock = new Mock<HttpContextBase>();var context = mock.Object;var mockRequest = Mock.Get(context.Request);