【问题标题】:AutoFixture Freeze returns empty objectAutoFixture Freeze 返回空对象
【发布时间】:2019-09-26 14:09:17
【问题描述】:

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

我希望当我测试具有依赖项的类时,对该依赖项的任何方法调用都会返回该对象的 AutoFixtured 实例。

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

我明白我可以明确写出

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

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

【问题讨论】:

    标签: c# moq autofixture automoq


    【解决方案1】:

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

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

    实际上,这就是AutoMoqCustomization 类的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
    

    【讨论】:

    • 谢谢!我不敢相信这么简单的解决方案对我来说这么难找到
    猜你喜欢
    • 2014-09-29
    • 2015-02-11
    • 2020-12-21
    • 2019-04-08
    • 2012-02-22
    • 2019-07-17
    • 2018-08-03
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多