AutoFixture 冻结 returns 空对象

AutoFixture Freeze returns empty object

我正在使用 AutoFixtureAutoMoqCustomization 来提供所需的 class 依赖项的任何模拟。

我预计当我使用依赖项测试 class 时,对该依赖项的任何方法调用都会 return 该对象的 AutoFixtured 实例。

AutoFixture 正在为依赖项创建模拟,这些模拟是 returning 对象,但对象是空的。任何可空的都将为空,任何不可空的都将是默认值。

我知道我可以明确地写

AutoFixture.Freeze<IDependent>()
    .Setup(x=>x.GetThing())
    .Returns(AutoFixture.Create<Thing>())

但我认为它可以在没有显式设置的情况下工作。这是预期的行为吗?

您还必须告诉 AutoMoqCustomization 配置成员。我猜其中一个版本的默认行为发生了变化:

fixture.Customize(new AutoMoqCustomization {ConfigureMembers = true});

实际上,这就是 AutoMoqCustomization class 的 documentation 建议:

/// <summary>
/// Enables auto-mocking with Moq.
/// </summary>
/// <remarks>
/// NOTICE! You can assign the customization properties to tweak the features you would like to enable. See example.
/// <br />
/// <code>new AutoMoqCustomization { ConfigureMembers = true }</code>
/// </remarks>
public class AutoMoqCustomization : ICustomization