Moq does not do recursive mocks by default. That is, for members without waiting for a layout, Moq returns the 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? And how to turn off automatic recursive mockery in AutoFixture.AutoMoq?
thanks
Moq.3.1.416.3
AutoFixture.AutoMoq.3.16.5
source
share