AutoFixture 冻结 returns 空对象
AutoFixture Freeze returns empty object
我正在使用 AutoFixture
和 AutoMoqCustomization
来提供所需的 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
我正在使用 AutoFixture
和 AutoMoqCustomization
来提供所需的 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