Moq does not make recursive mocks by default. That is, for members without expectations on a mock, Moq returns default values. For example, given:
public interface IFoo
{
Bar Bar();
}
and
public class Bar
{
}
then:
[TestMethod]
public void RecursiveMocksAreDisabledByDefaultInMoq()
{
var foo = new Mock<IFoo>().Object;
Assert.IsNull(foo.Bar());
}
However, in AutoFixture.AutoMoq, recursive mocks are enabled by default, as in:
[TestMethod]
public void RecursiveMocksAreEnabledByDefaultInAutoFixture()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var foo = fixture.Create<IFoo>();
Assert.IsNotNull(foo.Bar());
}
Why is that? And, how to turn off automatic recursive mocks in AutoFixture.AutoMoq?
Thanks
Moq.3.1.416.3 AutoFixture.AutoMoq.3.16.5