Implicit mocks
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
Mock.Of<T>
.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
Mock.Get
utility.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);
Last modified 2yr ago