AutoFixture 为 Moq 接口上的所有值返回空值

AutoFixture returning nulls for all values on a Moq'ed interface

我正在使用 AutoFixture 来填充一个相当大的接口对象,但我得到的每个 属性 都是空值(或默认值)。我都试过了:

var fixture = new Fixture();
var input = fixture.Create<Mock<ICustomer>>();

并且:

var fixture = new Fixture();
fixture.Register(() => Mock.Of<ICustomer>());
var input = fixture.Create<ICustomer>();

在这两种情况下,生成的 ICustomer 上的 none 个属性都被填充。我猜我错过了一些明显的东西?

您可以为此使用 AutoFixture.AutoMoq 包:

[Fact]
public void HowToCreateAnAutoConfiguredMoq()
{
    var fixture = new Fixture().Customize(new AutoConfiguredMoqCustomization());
    var c = fixture.Create<ICustomer>();
    Assert.NotEqual(default(string), c.Name);
}

就我个人而言,我不是 AutoConfiguredMoqCustomization 的忠实粉丝,因为我认为它使测试过于含蓄。我相信 explicit is better than implicit,所以我通常更喜欢使用 AutoMoqCustomization,并将其与显式配置那些对相关测试重要的行为相结合。

另见 How to configure AutoMoq to set up all properties